大家好,客户端应用程序正在使用cryptoJs Library进行AES加密
通过以下方式:
CryptoJS.AES.encrypt("Message", "SampleKey123456"
)
从文档中:
对于密钥,当您传递字符串时,将其视为密码短语并用于派生实际的密钥和IV。
Java服务器正在使用JDK8 + JCE
问题:
derive an actual key and IV
"SampleKey123456"
用作纯文本,并且如果它是实际的密钥而不是密码短语,则会使用new SecretKeySpec(keyPlain.getBytes(), "AES")
答案 0 :(得分:0)
如果任何人对spring-security-crypto兼容版本感兴趣: http://jsfiddle.net/robertwiesner/14Lhapv0/ 它使用带有密码和Salt的PBKDF2
var password = $("[name='password']").val();
var salt = CryptoJS.enc.Utf8.parse($("[name='salt']").val());
var key = CryptoJS.PBKDF2(password, salt, {
keySize: 256 / 32,
iterations: 1024
});
在春季:return Encryptors.standard(cryptoPassword, new
String(Hex.encode(Utf8.encode(cryptoKeySalt))));
,其中cryptoPassword和cryptoKeySalt是常规的字符串属性。
很快将在GitHub上发布完整的示例。