JavaScript 中 javax.crypto 的备用代码

Alternate Code in JavaScript for javax.crypto

我想在 Java 脚本中实现以下代码,而不是使用 javax.crypto 包。

以下代码将使用 AES 生成密钥。

    KeyGenerator kgen;
    String key;
    try {
        kgen = KeyGenerator.getInstance("AES");
        kgen.init(128);
        SecretKey secretkey = kgen.generateKey();
        BASE64Encoder encode = new BASE64Encoder();
        key = encode.encode(secretkey.getEncoded());
    } catch (NoSuchAlgorithmException e) {
       // exceptionLogFile(e, null);
        e.printStackTrace();
        key = "Error@SecretKeyGeneration: No Such Algorith Exception. " + e.getMessage();
    } catch (Exception e) {
       // exceptionLogFile(e, null);
        e.printStackTrace();
        key = "Error@SecretKeyGeneration: " + e.getMessage();
    }
    return key;

这在 Java 中完美运行,现在有人可以建议我在 JavaScript 中使用替代方案。

我知道了Crypto.js但是我怎么能在这里使用,不了解。

对于加密和解密,我使用 "AES/ECB/PKCS5Padding" 那么它与 javascript 代码兼容吗?

请帮忙。

提前致谢。

AES 密钥仅由随机字节组成。所以对于一个 128 字节的密钥,你可以这样做:

var key = CryptoJS.lib.WordArray.random(128/8);

并对其进行编码:

var keyBase64 = CryptoJS.enc.Base64.stringify(key);

当然密钥不会与您之前生成的密钥相同,您需要解码之前生成的 base 64 编码密钥才能做到这一点。


要使用密钥,请使用显式密钥参数:

var encrypted = CryptoJS.AES.encrypt("Message", key, { mode: CryptoJS.mode.ECB});

PKCS#7 填充 - 与 PKCS#5 填充相同 - 已经是默认设置,ECB 不使用 IV。