三个加密已经做为模块导出,直接调用即可。
AES
importClass("java.security.SecureRandom");
// importClass("java.security.MessageDigest");
importClass("javax.crypto.spec.DESKeySpec");
importClass("javax.crypto.SecretKeyFactory");
importClass("javax.crypto.Cipher");
importClass("java.security.NoSuchAlgorithmException");
importClass("javax.crypto.KeyGenerator");
importClass("javax.crypto.SecretKey");
importClass("javax.crypto.spec.SecretKeySpec");
importClass("javax.crypto.KeyGenerator");
importClass("javax.crypto.spec.IvParameterSpec");
function aes_Decrypt(encrypted, key, iv) {
var key = new java.lang.String(key);
var iv = new java.lang.String(iv);
var bm = new java.lang.String("UTF-8");
var keyb = key.getBytes(bm); //byte[]
var md = MessageDigest.getInstance("SHA-256");
var thedigest = md.digest(keyb); //byte[]
var skey = new SecretKeySpec(thedigest, "AES");
var dcipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
dcipher.init(Cipher.DECRYPT_MODE, skey, new IvParameterSpec(iv.getBytes()));
var clearbyte = dcipher.doFinal(base64Decode(encrypted));
return new java.lang.String(clearbyte);
}
function aes_Encrypt(content, key, iv) {
var content = new java.lang.String(content);
var key = new java.lang.String(key);
var iv = new java.lang.String(iv);
var bm = new java.lang.String("UTF-8");
var input = content.getBytes(bm); // byte[]
var md = MessageDigest.getInstance("SHA-256");
var thedigest = md.digest(key.getBytes("utf-8")); // byte[]
var skc = new SecretKeySpec(thedigest, "AES");
var cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, skc, new IvParameterSpec(iv.getBytes()));
var cipherText = util.java.array('byte', cipher.getOutputSize(input.length)); // byte[]
var ctLength = cipher.update(input, 0, input.length, cipherText, 0); // int
ctLength += cipher.doFinal(cipherText, ctLength);
var result = base64Encode(cipherText);
return result;
}
function base64Encode(r) {
var r = android.util.Base64.encodeToString(r, 0);
return r;
}
function base64Decode(r) {
var r = android.util.Base64.decode(r, 0)
return r;
}
var AES={};
AES.aes_Encrypt = aes_Encrypt;
AES.aes_Decrypt = aes_Decrypt;
module.exports = AES;
DES
/*
CryptoJS v3.1.2
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
var CryptoJS = CryptoJS || function (u, l) {
var d = {}, n = d.lib = {}, p = function () { }, s = n.Base = { extend: function (a) { p.prototype = this; var c = new p; a && c.mixIn(a); c.hasOwnProperty("init") || (c.init = function () { c.$super.init.apply(this, arguments) }); c.init.prototype = c; c.$super = this; return c }, create: function () { var a = this.extend(); a.init.apply(a, arguments); return a }, init: function () { }, mixIn: function (a) { for (var c in a) a.hasOwnProperty(c) && (this[c] = a[c]); a.hasOwnProperty("toString") && (this.toString = a.toString) }, clone: function () { return this.init.prototype.extend(this) } },
q = n.WordArray = s.extend({
init: function (a, c) { a = this.words = a || []; this.sigBytes = c != l ? c : 4 * a.length }, toString: function (a) { return (a || v).stringify(this) }, concat: function (a) { var c = this.words, m = a.words, f = this.sigBytes; a = a.sigBytes; this.clamp(); if (f % 4) for (var t = 0; t < a; t++)c[f + t >>> 2] |= (m[t >>> 2] >>> 24 - 8 * (t % 4) & 255) << 24 - 8 * ((f + t) % 4); else if (65535 < m.length) for (t = 0; t < a; t += 4)c[f + t >>> 2] = m[t >>> 2]; else c.push.apply(c, m); this.sigBytes += a; return this }, clamp: function () {
var a = this.words, c = this.sigBytes; a[c >>> 2] &= 4294967295 <<
32 - 8 * (c % 4); a.length = u.ceil(c / 4)
}, clone: function () { var a = s.clone.call(this); a.words = this.words.slice(0); return a }, random: function (a) { for (var c = [], m = 0; m < a; m += 4)c.push(4294967296 * u.random() | 0); return new q.init(c, a) }
}), w = d.enc = {}, v = w.Hex = {
stringify: function (a) { var c = a.words; a = a.sigBytes; for (var m = [], f = 0; f < a; f++) { var t = c[f >>> 2] >>> 24 - 8 * (f % 4) & 255; m.push((t >>> 4).toString(16)); m.push((t & 15).toString(16)) } return m.join("") }, parse: function (a) {
for (var c = a.length, m = [], f = 0; f < c; f += 2)m[f >>> 3] |= parseInt(a.substr(f,
2), 16) << 24 - 4 * (f % 8); return new q.init(m, c / 2)
}
}, b = w.Latin1 = { stringify: function (a) { var c = a.words; a = a.sigBytes; for (var m = [], f = 0; f < a; f++)m.push(String.fromCharCode(c[f >>> 2] >>> 24 - 8 * (f % 4) & 255)); return m.join("") }, parse: function (a) { for (var c = a.length, m = [], f = 0; f < c; f++)m[f >>> 2] |= (a.charCodeAt(f) & 255) << 24 - 8 * (f % 4); return new q.init(m, c) } }, x = w.Utf8 = { stringify: function (a) { try { return decodeURIComponent(escape(b.stringify(a))) } catch (c) { throw Error("Malformed UTF-8 data"); } }, parse: function (a) { return b.parse(unescape(encodeURIComponent(a))) } },
r = n.BufferedBlockAlgorithm = s.extend({
reset: function () { this._data = new q.init; this._nDataBytes = 0 }, _append: function (a) { "string" == typeof a && (a = x.parse(a)); this._data.concat(a); this._nDataBytes += a.sigBytes }, _process: function (a) { var c = this._data, m = c.words, f = c.sigBytes, t = this.blockSize, b = f / (4 * t), b = a ? u.ceil(b) : u.max((b | 0) - this._minBufferSize, 0); a = b * t; f = u.min(4 * a, f); if (a) { for (var e = 0; e < a; e += t)this._doProcessBlock(m, e); e = m.splice(0, a); c.sigBytes -= f } return new q.init(e, f) }, clone: function () {
var a = s.clone.call(this);
a._data = this._data.clone(); return a
}, _minBufferSize: 0
}); n.Hasher = r.extend({
cfg: s.extend(), init: function (a) { this.cfg = this.cfg.extend(a); this.reset() }, reset: function () { r.reset.call(this); this._doReset() }, update: function (a) { this._append(a); this._process(); return this }, finalize: function (a) { a && this._append(a); return this._doFinalize() }, blockSize: 16, _createHelper: function (a) { return function (c, m) { return (new a.init(m)).finalize(c) } }, _createHmacHelper: function (a) {
return function (c, m) {
return (new e.HMAC.init(a,
m)).finalize(c)
}
}
}); var e = d.algo = {}; return d
}(Math);
(function () {
var u = CryptoJS, l = u.lib.WordArray; u.enc.Base64 = {
stringify: function (d) { var n = d.words, l = d.sigBytes, s = this._map; d.clamp(); d = []; for (var q = 0; q < l; q += 3)for (var w = (n[q >>> 2] >>> 24 - 8 * (q % 4) & 255) << 16 | (n[q + 1 >>> 2] >>> 24 - 8 * ((q + 1) % 4) & 255) << 8 | n[q + 2 >>> 2] >>> 24 - 8 * ((q + 2) % 4) & 255, v = 0; 4 > v && q + 0.75 * v < l; v++)d.push(s.charAt(w >>> 6 * (3 - v) & 63)); if (n = s.charAt(64)) for (; d.length % 4;)d.push(n); return d.join("") }, parse: function (d) {
var n = d.length, p = this._map, s = p.charAt(64); s && (s = d.indexOf(s), -1 != s && (n = s)); for (var s = [], q = 0, w = 0; w <
n; w++)if (w % 4) { var v = p.indexOf