Лучший способ обфускации адреса электронной почты

Я создаю приложение, которое требует прохождения адресов электронной почты в цепочках и ссылки на эти страницы в общедоступных документах.

Я бы хотел, чтобы мой сайт не стал спамботом, поэтому я ищу простой алгоритм (желательно в JavaScript) для шифрования/обфускации адреса, чтобы его можно было публично использовать в URL, не делая адрес электронной почты, легкая цель.

ех

www.mysite.com/page.php?e=[removed_email]
 to
www.mysite.com/page.php?e=aed3Gfd469201

Предпочтительно результатом будет короткая строка, которая может быть легко использована в URL-адресе. Любые предложения по алгоритму, который я мог бы использовать?

5 ответов

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 = "[removed_email]";
x = obfusc(addr);
alert(addr + " -> " + x + " -> " + deobfusc(x))
// [removed_email] -> 15101a3f1a071e120f131a511c1012 -> [removed_email]


Некоторые варианты приходят мне на ум:)

  • moc.liamg@bob
  • [removed_email]b
  • [removed_email](где X постоянна)
  • [removed_email]


Самый простой способ - просто сохранить адреса электронной почты в таблице базы данных и передать поле ключа/идентификатора, которое вы просматриваете, в тот момент, когда вы действительно хотите отправить электронное письмо.


Как насчет простого хэширования электронной почты, скажем с помощью sha256?

licensed under cc by-sa 3.0 with attribution.