我希望在JavaScript中实现下面的代码,而不是使用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代码兼容吗?
请帮帮忙。
提前谢谢。
发布于 2016-12-03 10:40:52
AES密钥只是由随机字节组成。因此,对于128个字节键,您可以这样做:
var key = CryptoJS.lib.WordArray.random(128/8);并对其进行编码:
var keyBase64 = CryptoJS.enc.Base64.stringify(key);当然,密钥不会与之前生成的密钥相同,您需要解码先前生成的基64编码密钥。
若要使用该键,请使用显式键参数:
var encrypted = CryptoJS.AES.encrypt("Message", key, { mode: CryptoJS.mode.ECB});PKCS#7填充--与PKCS#5填充相同--已经是默认的,欧洲央行不使用IV。
https://stackoverflow.com/questions/40930369
复制相似问题