在Cryptojs中使用Pkcs5填充和AES加密

Moh*_*ebl 0 javascript encryption cryptojs

我只需要使用cryptojs AES加密,但使用填充Pkcs5,我在Cryptjs文档中找不到,我想这样做,因为它需要从后端.它与Pkcs7和cypher模式ECB一起运行良好,如何将此功能转换为与Pkcs5一起使用

encryptByAES: function (secretPwd) {
    var keyHex = CryptoJS.enc.Utf8.parse(this.encryption_key);
    var encrypted = CryptoJS.AES.encrypt(secretPwd, keyHex, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    console.log('encryptByAES key: ',encrypted.toString());
    return encrypted.toString();
}
Run Code Online (Sandbox Code Playgroud)

Ebb*_*sen 7

当与AES一起使用时,PKCS#5PKCS#7之间没有区别.

PKCS#5和PKCS#7填充之间的区别在于它支持的块大小.PKCS#5仅适用于8字节块,而PKCS#7适用于1到255字节之间的块大小.AES使用8字节的块大小.

  • 它们是有区别的!PKCS#5 最多填充 64 位 = 8*8 字节 (https://tools.ietf.org/html/rfc2898)。PKCS#7 最多填充 2040 位 = 255 * 8 字节 (https://tools.ietf.org/html/rfc2315)。PKCS#5 不应与 AES 一起使用。它是为 DES 创建的。 (3认同)