Clipperz JavaScript crypto library:
Example:
<script type="text/javascript" src="js/MochiKit.js"></script>
<script type="text/javascript" src="js/json2.js"></script>
<script type="text/javascript" src="js/Utils.js"></script>
<script type="text/javascript" src="js/Base.js"></script>
<script type="text/javascript" src="js/ByteArray.js"></script>
<script type="text/javascript" src="js/DOM.js"></script>
<script type="text/javascript" src="js/BigInt.js"></script>
<script type="text/javascript" src="js/Logging.js"></script>
<script type="text/javascript" src="js/sha256.js"></script>
<script type="text/javascript" src="js/aes.js"></script>
<script type="text/javascript" src="js/PRNG.js"></script>
<script type="text/javascript">
var keySizeInBits = 128; // this must be 128 or 256 bit
var keySize = keySizeInBits/8; // this must be 16 or 32 byte
/*** generate key */
var hash = getHash("Secret Passphrase", keySizeInBits);
var key = _getHexKey(hash, keySize);
/*** generate IV */
var iv = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(16);
/*-----------------------------------------------------------*
* ENCRYPT: AES 128 bit, CTR *
*-----------------------------------------------------------*/
var plain = new Clipperz.ByteArray("plaintext");
/*** encrypt */
var crypt = Clipperz.Crypto.AES.encrypt(key, plain, iv);
var ciphertext = crypt.toHexString();
/*-----------------------------------------------------------*
* DECRYPT: AES 128 bit, CTR *
*-----------------------------------------------------------*/
var cipher = new Clipperz.ByteArray(ciphertext);
/*** decrypt */
var ptext = Clipperz.Crypto.AES.decrypt(key, cipher);
var hex = ptext.toHexString();
plaintext = utf8_decode(_fromHexToString(hex.substring(2)));
</script>
This implementation of AES only supports key lengths of 128 and 256 bits.
The modes of operation currently available are:
And the padding schemes currently available are:
- CTS (ciphertext stealing)