Simple Encryption for JavaScript

by naveen

HTML

<p>
<input type="text" id="mytext" />
<input type="button" id="mybutton" value="Encrypt String"/>
</p>
<div id="result"></div>

JavaScript

var _charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789%";

function generateKey() {
    var str = "";
    var tar;
    tar = new Array();
    for (var c = 0; c < _charset.length; c++) {
        tar.push(_charset.substr(c, 1));
    }
    for (var c = 0; c < _charset.length; c++) {
        str += tar.splice(Math.round(Math.random() * (tar.length - 1)), 1);
    }
    return str;
}

function encrypt(v, _key) {
    var str = "";
    var key = _key;
    if (_key.length > 0 && v.length > 0) {
        v = escape(v);
        for (var c = 0; c < v.length; c++) {
            var ch = _charset.indexOf(v.substr(c, 1));
            if (ch > -1) {
                str += key.substr(ch, 1);
                key = rotateKey(key, v.charCodeAt(c));
            }
        }
        return str;
    } else {
        return "";
    }
}

function decrypt(v, _key) {
    var str = "";
    var key = _charset;
    if (_key.length > 0 && v.length > 0) {
        for (var c = 0; c < v.length; c++) {
            var ch = _key.indexOf(v.substr(c, 1));
            if (ch > -1) {
                str += key.substr(ch, 1);
                key = rotateKey(key, -key.charCodeAt(ch));
            }
        }
        return unescape(str);
    } else {
        return "";
    }
}

function rotateKey(s, amt) {
    amt = amt % s.length;
    if (amt < 0) {
        amt = s.length + amt;
    }
    if (amt != 0) {
        return s.substr(s.length - amt, amt) + s.substr(0, s.length - amt);
    } else {
        return unescape(s);
    }
}

$("#mybutton").click(function() {
    var pass = $("#mytext").val();
    var msg = ""

    var key = generateKey();

    var encryptedString = encrypt(pass, key);
    msg += "Encrypted String: " + encryptedString;
    msg += "<br />";
    var originalString = decrypt(encryptedString, key);
    msg += "Decrypted String: " + originalString;
    $("#result").html(msg);
});