parent
abbe4c0a4a
commit
029c7cf00c
@ -0,0 +1,55 @@ |
|||||||
|
|
||||||
|
let 图片解密 = function(key,iv,kiType,mode) { |
||||||
|
function hexStringToBytes(cipherText) { |
||||||
|
cipherText = String(cipherText); |
||||||
|
let str = cipherText.toLowerCase(); |
||||||
|
let length = str.length; |
||||||
|
let bArr = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, length / 2); |
||||||
|
for (let i = 0, o = 0; i < length; i += 2, o++) { |
||||||
|
let a = str[i + 1], |
||||||
|
b = str[i]; |
||||||
|
if (b != "0") { |
||||||
|
a = b + a; |
||||||
|
} |
||||||
|
let hexInt = java.lang.Integer.parseInt(new java.lang.String(a), 16); |
||||||
|
let inty = hexInt > 127 ? hexInt - 255 - 1 : hexInt; |
||||||
|
bArr[o] = inty; |
||||||
|
} |
||||||
|
return bArr; |
||||||
|
} |
||||||
|
let javaImport = new JavaImporter(); |
||||||
|
javaImport.importPackage( |
||||||
|
Packages.com.example.hikerview.utils, |
||||||
|
Packages.java.lang, |
||||||
|
Packages.java.security, |
||||||
|
Packages.javax.crypto, |
||||||
|
Packages.javax.crypto.spec |
||||||
|
); |
||||||
|
with(javaImport) { |
||||||
|
function getBytes(str) { |
||||||
|
let bytes; |
||||||
|
if (kiType === "Base64") { |
||||||
|
bytes = _base64.decode(str, _base64.NO_WRAP); |
||||||
|
} else if (kiType === "Hex") { |
||||||
|
bytes = hexStringToBytes(str); |
||||||
|
} else { |
||||||
|
bytes = String(str).getBytes("UTF-8"); |
||||||
|
} |
||||||
|
return bytes; |
||||||
|
} |
||||||
|
kiType = kiType || "String"; |
||||||
|
mode = mode || 'AES/CBC/PKCS5Padding'; |
||||||
|
key = getBytes(key); |
||||||
|
iv = getBytes(iv); |
||||||
|
function decryptData(cipherText) { |
||||||
|
let secretKeySpec = new SecretKeySpec(key, "AES"); |
||||||
|
let ivParameterSpec = new IvParameterSpec(iv); |
||||||
|
let cipher = Cipher.getInstance(mode); |
||||||
|
cipher.init(2, secretKeySpec, ivParameterSpec); |
||||||
|
return cipher.doFinal(cipherText); |
||||||
|
} |
||||||
|
let bytes = FileUtil.toBytes(input); |
||||||
|
bytes = decryptData(bytes); |
||||||
|
return FileUtil.toInputStream(bytes); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue