-1

我正在寻找在 C# 中加密字符串并使用 JavaScript 对其进行解密的方法。在这种情况下,JavaScript 是一种用于内部系统的脚本语言,所以我不应该担心人们会访问解密所需的私钥/密码。

在线搜索解决方案似乎 AES 加密应该可以解决问题。我研究了slowAES 和 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

4

3 回答 3

0

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

于 2009-09-24T00:09:48.880 回答
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 重定向和 prest-o-done。没有共享密钥,易于实现,它只是工作。

笔记:

至于您的原始解决方案,如果没有 COM 或其他一些互操作方式,它就无法安全完成。我这么说的原因是 JScript 需要访问公钥/私钥对,据我所知,这是不可能的。如果没有公钥/私钥,服务器将需要与客户端共享对称密钥。由于无法安全地传输此密钥,您没有保护数据,只是对其进行了混淆。

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

于 2009-09-24T00:50:36.360 回答
-6

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

于 2009-10-17T07:56:10.650 回答