【发布时间】:2014-02-27 15:47:54
【问题描述】:
密码将在 .NET 中使用 AES 加密并存储在数据库中。在另一个应用程序中,使用 javascript(在 Rhino 引擎之上)和 cryptojs 库,我需要解密密码然后使用它。
解决方案不需要很复杂,我所寻求的只是一个简单的实现,让这两个人一起工作。
在 .NET 中使用 ("Key") 的密钥成功加密了一个简单的字符串 ("SFTPPass"),但是一旦我开始在 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});
但是,当我将输出写入文件时,它是空的。
非常欢迎任何建议或替代解决方案!
编辑: 在 alincnet 的推荐下,我现在得到了输出,但字符串与原始字符串“1234”不匹配。因此,我使用相同的关键短语和输入字符串按照上面链接中的指南进行操作。在 .NET 中使用 BitConverter.toString 捕获了密钥和 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});
【问题讨论】:
-
请说明您是如何输出到文件的。
-
这很难解释。所以我使用了一个用 Java 构建的单独的应用程序(它使用 Rhino 作为脚本引擎)。在这个应用程序中,他们使用了一个名为“File Writer”的选项,我给它一个字符串(SFTPPass),它会自动处理写入文件的细节。该程序称为 Mirth Connect。编辑:现在我想起来了,你的意思是我是如何从 .NET 输出的吗?
-
我怀疑它正在做某事,但失败在于写入文件。有什么方法可以在这里注入自己的代码以输出到其他地方吗?或者您可以调试它并在断点处检查变量吗?
-
你能澄清一下我们是在谈论来自 .NET 还是来自 JavaScript 的输出?
-
在 JavaScript 中。可以直接查看SFTPPass的值吗?
标签: javascript .net cryptojs