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。
我想在 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。