我尝试在GCM模式下用Javascript中的SJCL库(从CasperJS中)来解密一个密码。当我执行下面的代码时,我收到的错误是:
错误:未定义:‘TypeError’不是函数(计算'b.encrypt(0,0,0,0)')
代码:
var masterkey = '39537496606860671661230109146651832357';
var cipher = 'Sa2Rk3bbdiaI7mO/';
var iv = '59804781381539321505720964105';
var authdata = '199590863504973848417387014842606357793';
var decff = sjcl.mode.gcm.decrypt(masterkey, cipher, iv, authdata);
console.log (decff);正如您所看到的,我基本上只是按照SJCL文档告诉我的那样调用了decrypt函数。
加密是用Python语言完成的,代码如下:https://github.com/bozhu/AES-GCM-Python我找到的是这个线程:AES in GCM mode in Python
在用一种语言加密和用另一种语言解密时,有什么需要特别考虑的吗?恐怕是这样..。我可以检查加密信息是否有效的AES/GCM?我真的不确定如何继续这里,因为我不是JS或Python或加密专家。
背景信息:我尝试用纯python实现或多或少安全的加密(这样我就可以在Google App Engine上运行它),并用纯JS实现合适的解密。
谢谢你的帮助。
发布于 2020-03-05 14:22:41
您不能直接解密,请尝试将加密的字符串、密码、IV和身份验证数据转换为bitArray。
const data = sjcl.mode.gcm.decrypt(cipherArray, encryptedBitArray, iv, authArray, 128);这里128是大小,你也可以使用256。
还要尝试在你的IV后面附加加密的字符串。
const bitArray = sjcl.codec.base64.toBits(content);
const bitArrayCopy = bitArray.slice(0);
const ivdec = bitArrayCopy.slice(0, 4);
const encryptedBitArray = bitArray.slice(4);
var key = sjcl.codec.base64.toBits("2d73c1dd2f6a3c981afc7c0d49d7b58f");
let cipher = new sjcl.cipher.aes(key);https://stackoverflow.com/questions/27492135
复制相似问题