密码将在.NET中使用AES加密并存储在数据库中。在另一个应用程序中,使用javascript (在Rhino引擎之上)和加密it库,我需要解密密码,然后使用它。
解决方案不需要复杂,我想要的只是一个简单的实现,我可以让这两个人一起工作。
遵循本指南:http://www.aspsnippets.com/Articles/AES-Encryption-Decryption-Cryptography-Tutorial-with-example-in-ASPNet-using-C-and-VBNet.aspx
成功地用.NET中的密钥(" key ")加密了一个简单的字符串(“.NET”),但是一旦我在javascript中解密,我就不知道该如何做了。
以下是我在javascript中的内容:
var encryptedPass = 'StrmZO1Vjd8noHYzXs8hiQQBQDJZA5Bpg3t4BcmrViU=';
var iv = CryptoJS.enc.Base64.parse('1Ph1oX+N+q/kzpdyaIKBpA==');
var key = CryptoJS.enc.Base64.parse('k/W+Xeenh3kSLneZ/DYXVpvshGbsFVdyfOFdFTJb1yE=');
var SFTPPass = CryptoJS.AES.decrypt(encryptedPass, 'Key', key, {iv: iv});但是,当我将输出写入文件时,它是空的。
欢迎任何建议或替代解决方案!
编辑:通过alancnet的推荐,我现在得到了输出,但是字符串与原来的"1234“不匹配。因此,我使用相同的关键字短语和输入字符串,遵循上面链接中的指南,直到连线。使用BitConverter.toString在.NET中捕获两个键的十六进制& iv。
key = "752DA9F0D612540EEF1DE07A144781261A3D604DE339174ADAC5D5D6A695ABFF"
iv = "9714413594225F1D14FA02101C0D584D"我的javascript现在看起来是什么样子:
var encryptedPass = 'Ao5ZnFYo344iWqv/Jr9euw==';
var iv = CryptoJS.enc.Hex.parse('9714413594225F1D14FA02101C0D584D');
var key = CryptoJS.enc.Hex.parse('752DA9F0D612540EEF1DE07A144781261A3D604DE339174ADAC5D5D6A695ABFF');
var decryptedString = CryptoJS.AES.decrypt(encryptedPass, key, {iv: iv});发布于 2014-02-27 17:01:21
你的代码:
var SFTPPass = CryptoJS.AES.decrypt(encryptedPass, 'Key', key, {iv: iv});'Key'是一个意外的参数,应该删除。
我将您的代码移植到Node:
var CryptoJS = new require("cryptojs").Crypto;
var encryptedPass = 'StrmZO1Vjd8noHYzXs8hiQQBQDJZA5Bpg3t4BcmrViU=';
var iv = CryptoJS.util.base64ToBytes('1Ph1oX+N+q/kzpdyaIKBpA==');
var key = CryptoJS.util.base64ToBytes('k/W+Xeenh3kSLneZ/DYXVpvshGbsFVdyfOFdFTJb1yE=');
var SFTPPass = CryptoJS.util.bytesToBase64(
CryptoJS.AES.decrypt(
encryptedPass,
key,
{
iv: iv,
asBytes: true
}
)
);
console.log(SFTPPass);它的输出:UABfRxZLApVrt/t8JtoHMhCxfYUPWDwMLuBmWe50tDw=
祝你好运:)
发布于 2014-02-27 18:20:33
我想出来了,这是我输出解密字符串的格式。
玩多种版本..。
FileWrite(decryptedString);
FileWrite(decryptedString.toString());最终起作用的是:
FileWrite(decryptedString.toString(CryptoJS.enc.Utf8));请注意"t“和"f”的小写,试着做"UTF8“,它也给了我完全不同的输出。
再次感谢alancnet指出我在尝试使用无效参数时所犯的主要错误,我可能要到今天晚些时候才会注意到这一点。
https://stackoverflow.com/questions/22073453
复制相似问题