我正在开发一个ASP.NET MVC应用程序,我想在服务器上使用C#加密一个短字符串,并将它发送到客户端。在.NET和Javascript中的简单字符串加密
然后在客户端,它将通过Javascript代码进行解密。
有关如何实现这一点的任何想法?
你知道一个简单的加密算法(不必是防弹保护),可以从C#很容易地转换为JavaScript或反之亦然?
注:我能做到这一点完全用C#和通过Ajax做解密,但我不希望这样做,因为我想减少网站的流量尽可能地。
我正在开发一个ASP.NET MVC应用程序,我想在服务器上使用C#加密一个短字符串,并将它发送到客户端。在.NET和Javascript中的简单字符串加密
然后在客户端,它将通过Javascript代码进行解密。
有关如何实现这一点的任何想法?
你知道一个简单的加密算法(不必是防弹保护),可以从C#很容易地转换为JavaScript或反之亦然?
注:我能做到这一点完全用C#和通过Ajax做解密,但我不希望这样做,因为我想减少网站的流量尽可能地。
System.Security.Cryptography有一堆对称(和非对称)加密算法可以使用。 (对于一些超安全使用aes)
你应该能够找到匹配的Javascript实现大多数(这里有几个AES的实现在JS)
注意:如果您打算使用基于私钥的加密,请记住,您的网页将嵌入密钥,这意味着这一切都会变得毫无意义。能够访问页面的人可以进行解密,充其量只会让屏幕刮板的生命变得更加困难。如果让屏幕刮板更难以生存是你的目标,你可以使用一个模糊算法。任何微不足道的实现对于没有javascript引擎的屏幕刮板来说都是非常不切实际的:
例如,
function samObsfucated()
{
return("s" + "a" + "m" + "@" + "s" + "." + "com");
}
然后onload用这些函数的输出填充您的电子邮件字段。
的Javascript加密对存储密码的用户ALA clipperz
您可以使用HTTPS加密客户端和服务器之间的所有流量吗?这可能是您找到的最安全的方法。
就可能工作的最简单的事情而言,似乎您想要一种简单的混淆形式,而不是任何真正安全的形式。
Rot-13可能已经足够,只要您使用ASCII电子邮件地址处理观众。如果你需要支持Unicode,那么你可能需要一些稍微复杂的东西。
这听起来像你想的混淆或编码,不加密。 Base64 encoding应该在这里工作得很好。结果看起来不像电子邮件地址,编码过程很快。
在C#中,你可以使用:
string emailAddress = "[email protected]";
string encoded = Convert.ToBase64String(Encoding.UTF8.GetBytes(emailAddress));
而且你可以使用这个JavaScript函数将其解码:
function Base64Decode(encoded) {
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/=";
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
do {
enc1 = keyStr.indexOf(encoded.charAt(i++));
enc2 = keyStr.indexOf(encoded.charAt(i++));
enc3 = keyStr.indexOf(encoded.charAt(i++));
enc4 = keyStr.indexOf(encoded.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
} while (i < encoded.length);
return output;
}
C#应用程序编码字符串[email protected]
为YWJjQGV4YW1wbGUuY29t
,和JavaScript版本将YWJjQGV4YW1wbGUuY29t
解码回[email protected]
。
我宁可不使用HTTPS,因为这只是一个简单的“小册子”网站,而我正在加密的所有内容都是电子邮件地址,以防止垃圾邮件。 我不想经历设置HTTPS的麻烦。 – Jonathan 2009-04-14 04:32:18