CRITTATURA
Instructions:

  1. Input the password into the password field.
  2. Optionally, input the signature into the signature field:
  3. Input the plain text into the plain text field.
  4. Press the SECURE button and observe the encrypted text.
  5. Press the UNSECURE button and look at the decrypted text.
  6. Check the 'new lines used' if you used new lines in the plain text

Password: Optional signature:
New lines used

Plain text:

Encrypted text:


Free JavaScripts provided
by The JavaScript Source

<!-- TWO STEPS TO INSTALL TEXT ENCRYPTION:

1. Copy the coding into the HEAD of your HTML document
2. Add the last code into the BODY of your HTML document -->

<!-- STEP ONE: Paste this code into the HEAD of your HTML document -->

<HEAD>

<SCRIPT LANGUAGE="JavaScript">
<!-- Original: Tomislav Sereg (tsereg@net.hr) -->
<!-- Web Site: http://www.inet.hr/~tsereg/jse -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
function doSecure() {
alert( 'JavaScript 1.2 or above required.' );
}
function doUnsecure() {
alert( 'JavaScript 1.2 or above required.' );
}
// End -->
</script>
<script language="JavaScript1.2">
<!-- Begin
function permutationGenerator(nNumElements) {
this.nNumElements = nNumElements;
this.antranspositions = new Array;
var k = 0;
for (i = 0; i < nNumElements - 1; i++)
for (j = i + 1; j < nNumElements; j++)
this.antranspositions[ k++ ] = ( i << 8 ) | j;
// keep two positions as lo and hi byte!
this.nNumtranspositions = k;
this.fromCycle = permutationGenerator_fromCycle;
}
function permutationGenerator_fromCycle(anCycle) {
var anpermutation = new Array(this.nNumElements);
for (var i = 0; i < this.nNumElements; i++) anpermutation[i] = i;
for (var i = 0; i < anCycle.length; i++) {
var nT = this.antranspositions[anCycle[i]];
var n1 = nT & 255;
var n2 = (nT >> 8) & 255;
nT = anpermutation[n1];
anpermutation[n1] = anpermutation[n2];
anpermutation[n2] = nT;
}
return anpermutation;
}
function password(strpasswd) {
this.strpasswd = strpasswd;
this.getHashValue = password_getHashValue;
this.getpermutation = password_getpermutation;
}
function password_getHashValue() {
var m = 907633409;
var a = 65599;
var h = 0;
for (var i = 0; i < this.strpasswd.length; i++)
h = (h % m) * a + this.strpasswd.charCodeAt(i);
return h;
}
function password_getpermutation() {
var nNUMELEMENTS = 13;
var nCYCLELENGTH = 21;
pg = new permutationGenerator(nNUMELEMENTS);
var anCycle = new Array(nCYCLELENGTH);
var npred = this.getHashValue();
for (var i = 0; i < nCYCLELENGTH; i++) {
npred = 314159269 * npred + 907633409;
anCycle[i] = npred % pg.nNumtranspositions;
}
return pg.fromCycle(anCycle);
}
function SecureContext(strText, strSignature, bEscape) {
this.strSIGNATURE = strSignature || '';
this.bESCApE = bEscape || false;
this.strText = strText;
this.escape = SecureContext_escape;
this.unescape = SecureContext_unescape;
this.transliterate = SecureContext_transliterate;
this.encypher = SecureContext_encypher;
this.decypher = SecureContext_decypher;
this.sign = SecureContext_sign;
this.unsign = SecureContext_unsign;
this.secure = SecureContext_secure;
this.unsecure = SecureContext_unsecure;
}
function SecureContext_escape(strToEscape) {
var strEscaped = '';
for (var i = 0; i < strToEscape.length; i++) {
var chT = strToEscape.charAt( i );
switch(chT) {
case '\r': strEscaped += '\\r'; break;
case '\n': strEscaped += '\\n'; break;
case '\\': strEscaped += '\\\\'; break;
default: strEscaped += chT;
}
}
return strEscaped;
}
function SecureContext_unescape(strToUnescape) {
var strUnescaped = '';
var i = 0;
while (i < strToUnescape.length) {
var chT = strToUnescape.charAt(i++);
if ('\\' == chT) {
chT = strToUnescape.charAt( i++ );
switch( chT ) {
case 'r': strUnescaped += '\r'; break;
case 'n': strUnescaped += '\n'; break;
case '\\': strUnescaped += '\\'; break;
default: // not possible
}
}
else strUnescaped += chT;
}
return strUnescaped;
}
function SecureContext_transliterate(btransliterate) {
var strDest = '';

var nTextIter = 0;
var nTexttrail = 0;

while (nTextIter < this.strText.length) {
var strRun = '';
var cSkipped = 0;
while (cSkipped < 7 && nTextIter < this.strText.length) {
var chT = this.strText.charAt(nTextIter++);
if (-1 == strRun.indexOf(chT)) {
strRun += chT;
cSkipped = 0;
}
else cSkipped++;
}
while (nTexttrail < nTextIter) {
var nRunIdx = strRun.indexOf(this.strText.charAt(nTexttrail++));
if (btransliterate) {
nRunIdx++
if (nRunIdx == strRun.length) nRunIdx = 0;
}
else {
nRunIdx--;
if (nRunIdx == -1) nRunIdx += strRun.length;
}
strDest += strRun.charAt(nRunIdx);
}
}
this.strText = strDest;
}
function SecureContext_encypher(anperm) {
var strEncyph = '';
var nCols = anperm.length;
var nRows = this.strText.length / nCols;
for (var i = 0; i < nCols; i++) {
var k = anperm[ i ];
for (var j = 0; j < nRows; j++) {
strEncyph += this.strText.charAt(k);
k += nCols;
}
}
this.strText = strEncyph;
}
function SecureContext_decypher(anperm) {
var nRows = anperm.length;
var nCols = this.strText.length / nRows;
var anRowOfs = new Array;
for (var i = 0 ; i < nRows; i++) anRowOfs[ anperm[ i ] ] = i * nCols;
var strplain = '';
for (var i = 0; i < nCols; i++) {
for (var j = 0; j < nRows; j++)
strplain += this.strText.charAt(anRowOfs[ j ] + i);
}
this.strText = strplain;
}
function SecureContext_sign(nCols) {
if (this.bESCApE) {
this.strText = this.escape(this.strText);
this.strSIGNATURE = this.escape(this.strSIGNATURE);
}
var nTextLen = this.strText.length + this.strSIGNATURE.length;
var nMissingCols = nCols - (nTextLen % nCols);
var strpadding = '';
if (nMissingCols < nCols)
for (var i = 0; i < nMissingCols; i++) strpadding += ' ';
var x = this.strText.length;
this.strText += strpadding + this.strSIGNATURE;
}
function SecureContext_unsign(nCols) {
if (this.bESCApE) {
this.strText = this.unescape(this.strText);
this.strSIGNATURE = this.unescape(this.strSIGNATURE);
}
if ('' == this.strSIGNATURE) return true;
var nTextLen = this.strText.lastIndexOf(this.strSIGNATURE);
if (-1 == nTextLen) return false;
this.strText = this.strText.substr(0, nTextLen);
return true;
}
function SecureContext_secure(strpasswd) {
var passwd = new password(strpasswd);
var anperm = passwd.getpermutation()
this.sign(anperm.length);
this.transliterate(true);
this.encypher(anperm);
}
function SecureContext_unsecure(strpasswd) {
var passwd = new password(strpasswd);
var anperm = passwd.getpermutation()
this.decypher(anperm);
this.transliterate(false);
return this.unsign(anperm.length);
}
// End -->
</script>

<script language="JavaScript1.2">
<!-- Begin
function doSecure() {
var sc = new SecureContext(document.frmSecurity.txtUnsecure.value,
document.frmSecurity.txtSign.value, document.frmSecurity.chkNewLines.checked);
sc.secure(document.frmSecurity.txtPassw.value);
document.frmSecurity.txtSecure.value = sc.strText;
document.frmSecurity.txtUnsecure.value = '';
}
function doUnsecure() {
var sc = new SecureContext(document.frmSecurity.txtSecure.value,
document.frmSecurity.txtSign.value, document.frmSecurity.chkNewLines.checked);
if (!sc.unsecure(document.frmSecurity.txtPassw.value))
alert('Invalid password used.');
document.frmSecurity.txtSecure.value = '';
document.frmSecurity.txtUnsecure.value = sc.strText;
}
// End -->
</script>
</HEAD>

<!-- STEP TWO: Copy this code into the BODY of your HTML document -->

<BODY>

<center>
<table border=1>
<tr>
<td>Instructions:<p>
<ol>
<li>Input the password into the password field.</li>
<li>Optionally, input the signature into the signature field:</li>
<li>Input the plain text into the plain text field.</li>
<li>Press the SECURE button and observe the encrypted text.</li>
<li>Press the UNSECURE button and look at the decrypted text.</li>
<li>Check the 'new lines used' if you used new lines in the plain text</li>
</ol>
<form name=frmSecurity>
<p>Password: <input type=text name=txtPassw size=20 value="12345678">
Optional signature: <input type=text name=txtSign size=20><br>
<input type=checkbox name=chkNewLines value="1"> New lines used</p>
<table border=0>
<tr>
<td><p>Plain text:</p></td>
<td></td>
<td><p>Encrypted text:</p></td>
</tr>
<tr>
<td><textarea rows=4 name=txtUnsecure cols=20 wrap=virtual>the quick brown fox jumps over the lazy dog</textarea></td>
<td align=center><input type=button value="SECURE >>"
name=btnSecure onclick="doSecure()"><br>
<input type=button value="<< UNSECURE"
name=btnUnsecure onclick="doUnsecure()"></td>
<td><textarea rows=4 name=txtSecure cols=20 wrap=virtual></textarea></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</center>

<p><center>
<font face="arial, helvetica" size="-2">Free JavaScripts provided<br>
by <a href="http://javascriptsource.com">The JavaScript Source</a></font>
</center><p>

<!-- Script Size: 8.32 KB -->