Я создаю приложение, которое требует раздающих адресов электронной почты в querystrings и соединении с этими страницами в общедоступных документах.
Я хотел бы препятствовать тому, чтобы мой сайт стал небесами спам-робота, таким образом, я ищу простой алгоритм (предпочтительно в JavaScript) для шифрования/запутывания адреса, таким образом, это может использоваться публично URL INA, не делая адрес электронной почты легкой целью.
исключая
www.mysite.com/page.php?e=bob@gmail.com
to
www.mysite.com/page.php?e=aed3Gfd469201
Предпочтительно результатом была бы довольно короткая строка, которая могла легко использоваться в URL. Какие-либо предложения, для какой алгоритм я мог использовать?
RSA-шифрование данных с использованием открытого ключа, соответствующего закрытому ключу, который хранится только на вашем сайте.
Base64 и urlencode результат.
вы можете создать простую функцию, которая исключает каждое значение char с некоторым целым числом и создает строку в шестнадцатеричной кодировке. (адреса электронной почты не содержат символов, отличных от 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
Самый простой метод - просто хранить адреса электронной почты в таблице базы данных и передавать ключ / поле ID, которое вы просматриваете в тот момент, когда хотите отправить письмо.
Как насчет простого хеширования электронной почты, скажем, с помощью sha256?