关于aes加密

Posted gopark

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于aes加密相关的知识,希望对你有一定的参考价值。

aes加密有几种模式:CBC,AES-128bit, Pkcs7补码方式(后台有可能是PKCS5Padding,是一样的),安卓和ios的key密钥对长度没有要求,但是前端web的密钥和偏移量必须是16位的,才能与java后台对上,前端代码如下

//aes加密
function encrypt(word) {
    var key = CryptoJS.enc.Utf8.parse("1234567890000000"); //16位
    var iv = CryptoJS.enc.Utf8.parse("1234567890000000");
    var encrypted = ‘‘;
    if (typeof(word) == ‘string‘) {
        var srcs = CryptoJS.enc.Utf8.parse(word);
        encrypted = CryptoJS.AES.encrypt(srcs, key, {
            iv: iv,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7
        });
    } else if (typeof(word) == ‘object‘) {//对象格式的转成json字符串
        data = JSON.stringify(word);
        var srcs = CryptoJS.enc.Utf8.parse(data);
        encrypted = CryptoJS.AES.encrypt(srcs, key, {
            iv: iv,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7
        })
    }
    return encrypted.ciphertext.toString();
}
// aes解密
function decrypt(word) {
    var key = CryptoJS.enc.Utf8.parse("1234567890000000"); 
    var iv = CryptoJS.enc.Utf8.parse("1234567890000000");
    var encryptedHexStr = CryptoJS.enc.Hex.parse(word);
    var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
    var decrypt = CryptoJS.AES.decrypt(srcs, key, {
        iv: iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    });
    var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    return decryptedStr.toString();
}

需要下载CryptoJS的包,下载:https://code.google.com/archive/p/crypto-js/downloads

以上是关于关于aes加密的主要内容,如果未能解决你的问题,请参考以下文章

关于openssl AES/ECB/PKCS5Padding加密 求助

关于CryptoJS中md5加密以及aes加密的随笔

AES加密

关于蓝牙通信的数据AES128 ECB加密解密

Android通过AES128加密解密字符串的代码

DES加密解密与AES加密解密