autojs调用java识字,auto.js 如何调用java 实现aes des md5加密

这篇博客介绍了如何在Auto.js中调用Java代码实现AES、DES和MD5加密算法。提供了完整的加密和解密函数,包括导入必要的Java类,定义加密解密过程,并导出为模块以便直接使用。此外,还包含了一个用于测试的MD5函数,用于计算字符串的MD5哈希值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三个加密已经做为模块导出,直接调用即可。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值