我已经设法通过 rsa 共享一个随机对称密钥。但是我无法使用它进行 aes 加密。问题似乎是 cryptoJS 使用的盐和初始化向量。
首先它的输出是这样的:
U2FsdGVkX19wbzVqqOr6U5dnuG34WyH+n1A4PX9Z+xBhY3bALGS7DOa/aphgnubc
Run Code Online (Sandbox Code Playgroud)
遗憾的是,谷歌搜索重复出现的“U2FsdGVkX”或“cryptoJS.AES 输出”是没有用的。
另一方面,golang 的 aes 只需要一个 32 位的密钥和每个 32 位长度的输入。这意味着我必须以某种方式将上述内容拆分为相应的块并弄清楚如何从秘密密钥和上述数据(可能包括 salt + init 向量)中创建 32 位密钥。
遗憾的是,http://code.google.com/p/crypto-js和任何谷歌搜索都没有为我提供解决方案。
顺便说一句 - 我现在的加密:
var arr = new Array(32);
symetricKey = "";
var symHex = "";
rng.nextBytes(arr);
for(var i = 0; i < arr.length; i++){
symetricKey += String.fromCharCode(arr[i]);
//symHex= arr[i].toString(16), added a 0 if needed (so length always increases by 2)
}
//submit symetric via rsa. This is working, the server gets that …Run Code Online (Sandbox Code Playgroud)