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

网上搜索解决方案,似乎 AES 加密应该可以解决问题。我调查过 SlowAES 和 Rijndael 托管解决方案, ,但没有运气让它发挥作用。

我使用了 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

有帮助吗?

解决方案 3

我已经成功使用RC4加密来解决我的问题。你可以在我的有关实现的更多信息博客

其他提示

加密/解密操作发生在二进制数据。因此,必须保留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 重定向并完成。没有共享密钥,易于实施,它就可以工作。

笔记:

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top