Jon*_*han 9 .net javascript c# string encryption
我正在开发一个ASP.NET MVC应用程序,其中我想使用C#加密服务器上的短字符串,并将其发送到客户端.
然后在客户端,它将通过Javascript代码解密.
有关如何实现这一点的任何想法?
您是否知道一种简单的加密算法(不一定是防弹安全的),可以很容易地从C#转换为Javascript,反之亦然?
注意:我可以在C#中完全执行此操作并通过Ajax进行解密,但我不希望这样做,因为我希望尽可能减少网站流量.
Joh*_*sch 10
听起来你想要混淆或编码,而不是加密.Base64编码应该在这里运行良好.结果看起来不像电子邮件地址,编码过程很快.
在C#中,您可以使用:
string emailAddress = "abc@example.com";
string encoded = Convert.ToBase64String(Encoding.UTF8.GetBytes(emailAddress));
Run Code Online (Sandbox Code Playgroud)
您可以使用此JavaScript函数对其进行解码:
function Base64Decode(encoded) {
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
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;
}
Run Code Online (Sandbox Code Playgroud)
C#应用程序将字符串编码abc@example.com为YWJjQGV4YW1wbGUuY29t,JavaScript版本将解码YWJjQGV4YW1wbGUuY29t回来abc@example.com.
该System.Security.Cryptography具有准备使用一堆对称的(和不对称的)encrytion算法.(对于超级安全的东西使用aes)
您应该能够找到大多数匹配的Javascript实现(这里是JS中的一些aes实现)
注意:如果您打算使用基于私钥的加密,请记住,您的网页将嵌入密钥,这意味着一切都变得毫无意义,因为任何有权访问该页面的人都可以进行解密,充其量你会让屏幕刮刀的生命变得更加困难.如果你的目标是制作屏幕刮刀,那么你可以使用遮挡算法.对于没有javascript引擎的屏幕抓取工具,任何简单的实现都会非常不切实际:
例如.
function samObsfucated()
{
return("s" + "a" + "m" + "@" + "s" + "." + "com");
}
Run Code Online (Sandbox Code Playgroud)
然后onload使用这些函数的输出填充您的电子邮件字段.
Javascript加密有一个非常好的用例,用于存储用户ala clipperz密码的软件
| 归档时间: |
|
| 查看次数: |
23121 次 |
| 最近记录: |