我正在寻找在C#中加密字符串并使用JavaScript解密它的方法。在这种情况下,JavaScript是内部系统的脚本语言,所以我不应该担心人们访问解密所需的私钥/密码。
在线搜索解决方案似乎AES加密应该可以解决问题。我调查了slowAES and RijndaelManaged solution,但没有运气让它发挥作用。
我使用了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
答案 0 :(得分:0)
加密/解密操作发生在二进制数据上。因此,您必须在C#和javascript之间保留该二进制数据。将输出编码为base64或十六进制字符串可能是最好的方法。
答案 1 :(得分:0)
选项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重定向和perst -o-done。没有共享密钥,易于实现,只是工作。
注意:
至于原始解决方案,如果没有COM或其他一些互操作方式,就无法安全地完成。我这说的原因是JScript需要访问公钥/私钥对,据我所知,这是不可能的。如果没有公钥/私钥,服务器将需要与客户端共享对称密钥。无法安全地传输此密钥,您无法保护数据,只会对其进行模糊处理。
我认为最简单的方法是使用SSL,然后使用转发URL。
答案 2 :(得分:-5)
我设法使用RC4加密解决了我的问题。您可以在blog上获得有关实施的更多信息。