繁体   English   中英

用C#加密用JavaScript解密

[英]Encrypt in C# decrypt in JavaScript

我正在寻找在C#中加密字符串并使用JavaScript解密的方法。 在这种情况下,JavaScript是内部系统的脚本语言,因此我不必担心人们访问解密所需的私钥/密码。

在网上搜索解决方案,似乎AES加密应该可以解决问题。 我已经研究过慢速AES和RijndaelManaged解决方案 ,但运气不好。

我使用了Cheeso提供的C#代码,并收到了相同的密文。 但是,当我尝试使用slowAES加密相同的数据时,我收到了完全不同的密码。

var testString = new Array("w", "a", "t", "s", "o", "n", "?");
var test = slowAES.encrypt(testString, slowAES.modeOfOperation.CBC, "12345678901234567890123456789012", slowAES.aes.keySize.SIZE_256, new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
alert(test.cipher);

有人可以指出我正确的方向吗? 只要能取得结果,我都不关心该方法。 我的目标是以URL为例:

www.test.com/clientid=123

使用.NET(C#)对其进行加密,看起来像

www.test.com/clientid=asdf;lkjsxd;flkjq934857u9duhfgkjhgalsdkjfh

然后使用JavaScript将其转换回

www.test.com/clientid=123

谢谢,ITRushn

加密/解密操作发生在二进制数据上。 因此,必须在C#和javascript之间保留该二进制数据。 将输出编码为base64或十六进制字符串可能是最好的方法。

选项1

如果您唯一的目的是保护服务器和客户端之间的敏感数据(这是已解决的问题),请使用SSL。

选项2

  • 给定网址www.test.com/clientid=123

  • 使用.NET(C#)对其进行加密并指向其他位置:www.mywebserver.com/forward.aspx?url=asdf;lkjsxd;flkjq934857u9duhfgkjhgalsdkjfh

  • 然后在forward.aspx页面中,解密并重定向到www.test.com/clientid=123

  • 然后,客户端将遵循HTTP重定向和pre-o-done。 没有共享密钥,易于实现,可以正常工作。

注意:

至于您的原始解决方案,如果没有COM或其他互操作方式,则无法安全完成。 我之所以这样说,是因为据我所知,JScript将需要访问公用/专用密钥对。 如果没有公钥/私钥,则服务器将需要与客户端共享对称密钥。 没有办法安全地传输此密钥,您没有保护数据,只是混淆了数据。

我认为最简单的方法是使用SSL,然后再使用转发URL。

我设法使用RC4加密解决了我的问题。 您可以在我的博客上获得有关实施的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM