Already noticed the first mistake
You’re right Jonathan, using one whole page to decipher another would also be interesting. It’d take a bit more code (temporary storage is needed for keeping the previous page) but it still shouldn’t be too difficult. The pages could then be considered as having been encrypted with a one-time pad, which is unbreakable and thus a cool idea in itself.
I already noticed the first mistake in my code above: I forgot to strip the page number from the title prior to use, but it should be, as numbers aren’t part of the alphabet. Here’s a fixed version that takes out the page number and whitespace preceding it:
(function () {
var alphabet, c, i, m, text, title;
alphabet = 'abcdefghijklmnopqrstuvwxyz,. ';
title = document.title.replace(new RegExp('[^abcdefghijklmnopqrstuvwxyz,\. ]', 'g'), '');
title = title.substr(0, title.length - 1);
text = {
original: document.getElementById('textblock').textContent,
decoded: ''
};
for (i = 0; i < text.original.length; i += 1) {
c = text.original.substr(i, 1);
if (c === '\n') {
text.decoded += c;
} else {
m = alphabet.indexOf(title.substr(i % title.length, 1)); /* add "+ 1" if you want A = 1, B = 2,... instead of A = 0, B = 1,... */
text.decoded += alphabet.substr(((alphabet.indexOf(c) - m) % alphabet.length), 1);
}
}
document.getElementById('textblock').textContent = text.decoded;
}());