ecmaScrypt JavaScript crypto library:
Example:
<script type="text/javascript" src="js/ecmascrypt_function.js"></script>
<script type="text/javascript">
var keySizeInBits = 128; // this must be 128, 192 or 256 bit
var keySize = keySizeInBits/8; // this must be 16, 24 or 32 byte
/*-----------------------------------------------------------*
* ENCRYPT: AES 128 bit, OFB *
*-----------------------------------------------------------*/
/*** generate key */
var hex_key = getHexKey("Secret Passphrase", parseInt(keySize));
var iv = ecmaScrypt.toHex(ecmaScrypt.generateSharedKey(16)); // IV
var mode = 0; // OFB (0), CFB (1), CBC (2)
var plaintext = "plaintext";
var originLen = plaintext.length;
/*** encrypt */
var ciph = ecmaScrypt.encrypt(plaintext,
mode,
ecmaScrypt.toNumbers(hex_key),
keySize,
ecmaScrypt.toNumbers(iv));
if (ciph) {
var outhex = '';
for(var i = 0; i < ciph.cipher.length; i++) {
outhex += ecmaScrypt.toHex(ciph.cipher.charCodeAt(i));
}
var ciphertext = outhex;
}
/*-----------------------------------------------------------*
* DECRYPT: AES 128 bit, OFB *
*-----------------------------------------------------------*/
var innumbers = ecmaScrypt.toNumbers(ciphertext);
var instring = '';
for (var i = 0; i < innumbers.length; i++) {
instring += String.fromCharCode(innumbers[i]);
}
var dec = '';
/*** decrypt */
plaintext = ecmaScrypt.decrypt(instring,
originLen,
mode,
ecmaScrypt.toNumbers(hex_key),
keySize,
ecmaScrypt.toNumbers(iv));
</script>
The modes of operation currently available are:
And the padding schemes currently available are:
- CTS (ciphertext stealing)