Hallo,
ich habe ein kleines Skript geschrieben, das mir Text ver- und entschlüsselt.
Beispielsweise möchte ich nicht, dass meine Adresse im Impressum von Spidern oder Crawlern erfasst wird. Folgendes Skript kam dabei heraus:
Text.js
Code:
function Text()
{
}
Text.decryptDocument = function()
{
var tags = document.getElementsByTagName("SPAN");
for (var tag, i = 0, ix = tags.length; i < ix; ++i) {
tag = tags[i];
if (tag.className.match(/\bencrypted\b/)) {
tag.innerHTML = Text.decrypt(tag.innerHTML);
tag.className = tag.className.replace(/\bencrypted\b/, "");
}
}
tags = document.getElementsByTagName("A");
for (var email, i = 0, ix = tags.length; i < ix; ++i) {
tag = tags[i];
if (tag.className.match(/\bencrypted\b/)) {
email = Text.decrypt(tag.innerHTML);
tag.href = "mailto:" + email;
tag.innerHTML = email;
tag.className = tag.className.replace(/\bencrypted\b/, "");
}
}
}
Text.encrypt = function(plainText)
{
var encryptedText = [];
for (var i = plainText.length - 1; i >= 0; --i) {
encryptedText.push(plainText.charCodeAt(i));
}
return encryptedText.join("-");
}
Text.decrypt = function(cryptText)
{
cryptText = cryptText.split("-");
plainText = "";
for (var i = cryptText.length - 1; i >= 0; --i) {
plainText += String.fromCharCode(cryptText[i]);
}
return plainText;
}
Wird Text.decryptDocument() nach dem Laden (onload) gestartet, entschlüsselt es <span> und <a> Tags, bei letzterem wird ein mailto-Link erstellt.
Code:
<span class="encrypted">101-104-117-114-115-108-114-97-75-32-55-51-49-54-55</span>
<a class="encrypted">101-100-46-115-115-112-104-112-64-111-102-110-105</a>
Die statischen Methoden Text.encrypt() und Text.decrypt() erwarten als ersten und einzigen Parameter einen Klartext bzw. verschlüsselten Text und geben diesen verschlüsselt bzw. entschlüsselt zurück.
Die statische Methode Text.decryptDocument() hingegen durchforstet das Dokument und entschlüsselt automatisch.
Es macht Sinn, in einer Produktionsumgebung die Methode Text.encrypt() zu entfernen, da sie nur zum Erstellen der verschlüsselten Zeichenketten genutzt werden sollte.
Verschlüsseln ist übrigens auch ein etwas hochgegriffenes Wort, es wird lediglich der Unicode der Buchstaben verwendet, welche dann mit einem Bindestrich getrennt werden.
Vielleicht findet es ja bei dem ein oder anderen Verwendung.