CryptoJS AES Encryption

CryptoJS AES Encryption

by lsloan

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/pad-nopadding-min.js"></script>
<p>Message: <span id="message"></span>
</p>
<p>Padded message: <span id="padMsg"></span>
</p>
<p>Encrypted: <span id="1"></span>
</p>
<p>Encrypted text: <span id="2"></span>
</p>

JavaScript

function padString(source) {
    var paddingChar = ' ';
    var size = 16;
    var padLength = size - source.length;

    for (var i = 0; i < padLength; i++) source += paddingChar;

    return source;
}

var key = CryptoJS.enc.Hex.parse('0123456789abcdef');
var iv = CryptoJS.enc.Hex.parse('fedcba9876543210');
var message = "fubar";
var padMsg = padString(message);

var encrypted = CryptoJS.AES.encrypt(padMsg, key, {
    iv: iv,
    padding: CryptoJS.pad.NoPadding,
    mode: CryptoJS.mode.CBC
});

$('#message').text('"' + message + '" ' + message.length);
$('#padMsg').text('"' + padMsg + '" ' + padMsg.length);
$('#1').text(encrypted);
$('#2').text(encrypted.ciphertext);