我正在创建一个应用程序,该应用程序需要在查询字符串中传递电子邮件地址并链接到公共文档中的这些页面。
我想阻止我的网站变成spambot天堂,所以我正在寻找一个简单的算法(最好是在JavaScript中)来加密/混淆地址,这样它就可以在URL中公开使用而不会使电子邮件地址成为容易成为攻击目标。
离
www.mysite.com/page.php?e=bob@gmail.com
to
www.mysite.com/page.php?e=aed3Gfd469201
优选地,结果将是可以容易地在URL中使用的短字符串。我可以使用什么算法的任何建议?
答案 0 :(得分:8)
使用与您的网站仅持有的私钥相对应的公钥对数据进行RSA加密。
Base64并对结果进行urlencode。
答案 1 :(得分:3)
你可以创建一个简单的函数,它将使用某个整数xor每个char值,并生成一个十六进制编码的字符串。 (电子邮件地址不包含非ascii字符,因此它不会与多字节字符复杂化)。 e.g:
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
答案 2 :(得分:1)
我想到了一些选择:)
答案 3 :(得分:0)
如何使用sha256简单地对电子邮件进行哈希处理?
答案 4 :(得分:0)
最简单的方法是将电子邮件地址存储在数据库表中,并传递您在实际发送电子邮件时查找的键/ ID字段。