我正在创建一个应用程序,它需要在查询字符串中传递电子邮件地址,并在公共文档中链接到这些页面。
我想防止我的网站成为垃圾邮件天堂,所以我正在寻找一种简单的算法(最好是在JavaScript中)来加密/混淆地址,这样它就可以在网址中公开使用,而不会使电子邮件地址成为容易攻击的目标。
例如
www.mysite.com/page.php?e=bob@gmail.com
to
www.mysite.com/page.php?e=aed3Gfd469201优选地,结果将是一个可以在URL中轻松使用的短字符串。对我可以使用的算法有什么建议吗?
发布于 2010-08-10 10:42:16
RSA-使用与仅由您的站点持有的私钥对应的公钥加密数据。
Base64和urlencode结果。
发布于 2010-08-10 12:06:26
您可以创建一个简单的函数,该函数将每个字符值与某个整数进行xor运算,并生成一个十六进制编码的字符串。(电子邮件地址不包含非ascii字符,因此它不会与多字节字符一起复杂化)。例如:
obfusc = function(s, c) {
c = c || 0x7f;
r = "";
for (i in s) {
valh = (s.charCodeAt(i) ^ c).toString(16);
if (valh.length == 1) valh = "0" + valh;
r += valh;
};
return r;
}
deobfusc = function(s, c) {
c = c || 0x7f;
r = "";
for (var i=0; i<(s.length/2); i++) {
r += String.fromCharCode(parseInt(s.substr(i*2, 2), 16) ^ c)
};
return r;
}
addr = "joe@example.com";
x = obfusc(addr);
alert(addr + " -> " + x + " -> " + deobfusc(x))
// joe@example.com -> 15101a3f1a071e120f131a511c1012 -> joe@example.com发布于 2010-08-10 10:49:23
一些选项出现在我的脑海中:)
https://stackoverflow.com/questions/3445659
复制相似问题