分离js加解密文件,保留之前的方法,标记为弃用
This commit is contained in:
@@ -0,0 +1,474 @@
|
|||||||
|
package io.legado.app.help
|
||||||
|
|
||||||
|
import android.util.Base64
|
||||||
|
import cn.hutool.crypto.digest.DigestUtil
|
||||||
|
import cn.hutool.crypto.digest.HMac
|
||||||
|
import cn.hutool.crypto.symmetric.SymmetricCrypto
|
||||||
|
import io.legado.app.utils.MD5Utils
|
||||||
|
|
||||||
|
interface JsEncodeUtils {
|
||||||
|
|
||||||
|
fun md5Encode(str: String): String {
|
||||||
|
return MD5Utils.md5Encode(str)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun md5Encode16(str: String): String {
|
||||||
|
return MD5Utils.md5Encode16(str)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//******************对称加密解密************************//
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 在js中这样使用
|
||||||
|
* java.createSymmetricCrypto(transformation, key, iv).decrypt(data)
|
||||||
|
* java.createSymmetricCrypto(transformation, key, iv).decryptStr(data)
|
||||||
|
|
||||||
|
* java.createSymmetricCrypto(transformation, key, iv).encrypt(data)
|
||||||
|
* java.createSymmetricCrypto(transformation, key, iv).encryptBase64(data)
|
||||||
|
* java.createSymmetricCrypto(transformation, key, iv).encryptHex(data)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* 调用SymmetricCrypto key为null时使用随机密钥*/
|
||||||
|
fun createSymmetricCrypto(
|
||||||
|
transformation: String,
|
||||||
|
key: ByteArray?,
|
||||||
|
iv: ByteArray?
|
||||||
|
): SymmetricCrypto {
|
||||||
|
val symmetricCrypto = SymmetricCrypto(transformation, key)
|
||||||
|
return if (iv != null && iv.isNotEmpty()) symmetricCrypto.setIv(iv) else symmetricCrypto
|
||||||
|
}
|
||||||
|
|
||||||
|
fun createSymmetricCrypto(
|
||||||
|
transformation: String,
|
||||||
|
key: ByteArray
|
||||||
|
): SymmetricCrypto {
|
||||||
|
return createSymmetricCrypto(transformation, key, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun createSymmetricCrypto(
|
||||||
|
transformation: String,
|
||||||
|
key: String
|
||||||
|
): SymmetricCrypto {
|
||||||
|
return createSymmetricCrypto(transformation, key, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun createSymmetricCrypto(
|
||||||
|
transformation: String,
|
||||||
|
key: String,
|
||||||
|
iv: String?
|
||||||
|
): SymmetricCrypto {
|
||||||
|
return createSymmetricCrypto(
|
||||||
|
transformation, key.encodeToByteArray(), iv?.encodeToByteArray()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
//******************对称加密解密old************************//
|
||||||
|
|
||||||
|
/////AES
|
||||||
|
/**
|
||||||
|
* AES 解码为 ByteArray
|
||||||
|
* @param str 传入的AES加密的数据
|
||||||
|
* @param key AES 解密的key
|
||||||
|
* @param transformation AES加密的方式
|
||||||
|
* @param iv ECB模式的偏移向量
|
||||||
|
*/
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).decrypt(str)")
|
||||||
|
)
|
||||||
|
fun aesDecodeToByteArray(
|
||||||
|
str: String, key: String, transformation: String, iv: String
|
||||||
|
): ByteArray? {
|
||||||
|
return createSymmetricCrypto(transformation, key, iv).decrypt(str)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AES 解码为 String
|
||||||
|
* @param str 传入的AES加密的数据
|
||||||
|
* @param key AES 解密的key
|
||||||
|
* @param transformation AES加密的方式
|
||||||
|
* @param iv ECB模式的偏移向量
|
||||||
|
*/
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).decryptStr(str)")
|
||||||
|
)
|
||||||
|
fun aesDecodeToString(
|
||||||
|
str: String, key: String, transformation: String, iv: String
|
||||||
|
): String? {
|
||||||
|
return createSymmetricCrypto(transformation, key, iv).decryptStr(str)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AES解码为String,算法参数经过Base64加密
|
||||||
|
*
|
||||||
|
* @param data 加密的字符串
|
||||||
|
* @param key Base64后的密钥
|
||||||
|
* @param mode 模式
|
||||||
|
* @param padding 补码方式
|
||||||
|
* @param iv Base64后的加盐
|
||||||
|
* @return 解密后的字符串
|
||||||
|
*/
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).decryptStr(data)")
|
||||||
|
)
|
||||||
|
fun aesDecodeArgsBase64Str(
|
||||||
|
data: String,
|
||||||
|
key: String,
|
||||||
|
mode: String,
|
||||||
|
padding: String,
|
||||||
|
iv: String
|
||||||
|
): String? {
|
||||||
|
return createSymmetricCrypto(
|
||||||
|
"AES/${mode}/${padding}",
|
||||||
|
Base64.decode(key, Base64.NO_WRAP),
|
||||||
|
Base64.decode(iv, Base64.NO_WRAP)
|
||||||
|
).decryptStr(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已经base64的AES 解码为 ByteArray
|
||||||
|
* @param str 传入的AES Base64加密的数据
|
||||||
|
* @param key AES 解密的key
|
||||||
|
* @param transformation AES加密的方式
|
||||||
|
* @param iv ECB模式的偏移向量
|
||||||
|
*/
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).decrypt(str)")
|
||||||
|
)
|
||||||
|
fun aesBase64DecodeToByteArray(
|
||||||
|
str: String, key: String, transformation: String, iv: String
|
||||||
|
): ByteArray? {
|
||||||
|
return createSymmetricCrypto(transformation, key, iv).decrypt(str)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已经base64的AES 解码为 String
|
||||||
|
* @param str 传入的AES Base64加密的数据
|
||||||
|
* @param key AES 解密的key
|
||||||
|
* @param transformation AES加密的方式
|
||||||
|
* @param iv ECB模式的偏移向量
|
||||||
|
*/
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).decryptStr(str)")
|
||||||
|
)
|
||||||
|
fun aesBase64DecodeToString(
|
||||||
|
str: String, key: String, transformation: String, iv: String
|
||||||
|
): String? {
|
||||||
|
return createSymmetricCrypto(transformation, key, iv).decryptStr(str)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加密aes为ByteArray
|
||||||
|
* @param data 传入的原始数据
|
||||||
|
* @param key AES加密的key
|
||||||
|
* @param transformation AES加密的方式
|
||||||
|
* @param iv ECB模式的偏移向量
|
||||||
|
*/
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).decrypt(data)")
|
||||||
|
)
|
||||||
|
fun aesEncodeToByteArray(
|
||||||
|
data: String, key: String, transformation: String, iv: String
|
||||||
|
): ByteArray? {
|
||||||
|
return createSymmetricCrypto(transformation, key, iv).decrypt(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加密aes为String
|
||||||
|
* @param data 传入的原始数据
|
||||||
|
* @param key AES加密的key
|
||||||
|
* @param transformation AES加密的方式
|
||||||
|
* @param iv ECB模式的偏移向量
|
||||||
|
*/
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).decryptStr(data)")
|
||||||
|
)
|
||||||
|
fun aesEncodeToString(
|
||||||
|
data: String, key: String, transformation: String, iv: String
|
||||||
|
): String? {
|
||||||
|
return createSymmetricCrypto(transformation, key, iv).decryptStr(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加密aes后Base64化的ByteArray
|
||||||
|
* @param data 传入的原始数据
|
||||||
|
* @param key AES加密的key
|
||||||
|
* @param transformation AES加密的方式
|
||||||
|
* @param iv ECB模式的偏移向量
|
||||||
|
*/
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).encryptBase64(data).toByteArray()")
|
||||||
|
)
|
||||||
|
fun aesEncodeToBase64ByteArray(
|
||||||
|
data: String, key: String, transformation: String, iv: String
|
||||||
|
): ByteArray? {
|
||||||
|
return createSymmetricCrypto(transformation, key, iv).encryptBase64(data).toByteArray()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加密aes后Base64化的String
|
||||||
|
* @param data 传入的原始数据
|
||||||
|
* @param key AES加密的key
|
||||||
|
* @param transformation AES加密的方式
|
||||||
|
* @param iv ECB模式的偏移向量
|
||||||
|
*/
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).encryptBase64(data)")
|
||||||
|
)
|
||||||
|
fun aesEncodeToBase64String(
|
||||||
|
data: String, key: String, transformation: String, iv: String
|
||||||
|
): String? {
|
||||||
|
return createSymmetricCrypto(transformation, key, iv).encryptBase64(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AES加密并转为Base64,算法参数经过Base64加密
|
||||||
|
*
|
||||||
|
* @param data 被加密的字符串
|
||||||
|
* @param key Base64后的密钥
|
||||||
|
* @param mode 模式
|
||||||
|
* @param padding 补码方式
|
||||||
|
* @param iv Base64后的加盐
|
||||||
|
* @return 加密后的Base64
|
||||||
|
*/
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).encryptBase64(data)")
|
||||||
|
)
|
||||||
|
fun aesEncodeArgsBase64Str(
|
||||||
|
data: String,
|
||||||
|
key: String,
|
||||||
|
mode: String,
|
||||||
|
padding: String,
|
||||||
|
iv: String
|
||||||
|
): String? {
|
||||||
|
return createSymmetricCrypto("AES/${mode}/${padding}", key, iv).encryptBase64(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
/////DES
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).decryptStr(data)")
|
||||||
|
)
|
||||||
|
fun desDecodeToString(
|
||||||
|
data: String, key: String, transformation: String, iv: String
|
||||||
|
): String? {
|
||||||
|
return createSymmetricCrypto(transformation, key, iv).decryptStr(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).decryptStr(data)")
|
||||||
|
)
|
||||||
|
fun desBase64DecodeToString(
|
||||||
|
data: String, key: String, transformation: String, iv: String
|
||||||
|
): String? {
|
||||||
|
return createSymmetricCrypto(transformation, key, iv).decryptStr(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).encrypt(data)")
|
||||||
|
)
|
||||||
|
fun desEncodeToString(
|
||||||
|
data: String, key: String, transformation: String, iv: String
|
||||||
|
): String? {
|
||||||
|
return String(createSymmetricCrypto(transformation, key, iv).encrypt(data))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).encryptBase64(data)")
|
||||||
|
)
|
||||||
|
fun desEncodeToBase64String(
|
||||||
|
data: String, key: String, transformation: String, iv: String
|
||||||
|
): String? {
|
||||||
|
return createSymmetricCrypto(transformation, key, iv).encryptBase64(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
//////3DES
|
||||||
|
/**
|
||||||
|
* 3DES解密
|
||||||
|
*
|
||||||
|
* @param data 加密的字符串
|
||||||
|
* @param key 密钥
|
||||||
|
* @param mode 模式
|
||||||
|
* @param padding 补码方式
|
||||||
|
* @param iv 加盐
|
||||||
|
* @return 解密后的字符串
|
||||||
|
*/
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).decryptStr(data)")
|
||||||
|
)
|
||||||
|
fun tripleDESDecodeStr(
|
||||||
|
data: String,
|
||||||
|
key: String,
|
||||||
|
mode: String,
|
||||||
|
padding: String,
|
||||||
|
iv: String
|
||||||
|
): String? {
|
||||||
|
return createSymmetricCrypto("DESede/${mode}/${padding}", key, iv).decryptStr(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 3DES解密,算法参数经过Base64加密
|
||||||
|
*
|
||||||
|
* @param data 加密的字符串
|
||||||
|
* @param key Base64后的密钥
|
||||||
|
* @param mode 模式
|
||||||
|
* @param padding 补码方式
|
||||||
|
* @param iv Base64后的加盐
|
||||||
|
* @return 解密后的字符串
|
||||||
|
*/
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).decryptStr(data)")
|
||||||
|
)
|
||||||
|
fun tripleDESDecodeArgsBase64Str(
|
||||||
|
data: String,
|
||||||
|
key: String,
|
||||||
|
mode: String,
|
||||||
|
padding: String,
|
||||||
|
iv: String
|
||||||
|
): String? {
|
||||||
|
return createSymmetricCrypto(
|
||||||
|
"DESede/${mode}/${padding}",
|
||||||
|
Base64.decode(key, Base64.NO_WRAP),
|
||||||
|
iv.encodeToByteArray()
|
||||||
|
).decryptStr(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 3DES加密并转为Base64
|
||||||
|
*
|
||||||
|
* @param data 被加密的字符串
|
||||||
|
* @param key 密钥
|
||||||
|
* @param mode 模式
|
||||||
|
* @param padding 补码方式
|
||||||
|
* @param iv 加盐
|
||||||
|
* @return 加密后的Base64
|
||||||
|
*/
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).encryptBase64(data)")
|
||||||
|
)
|
||||||
|
fun tripleDESEncodeBase64Str(
|
||||||
|
data: String,
|
||||||
|
key: String,
|
||||||
|
mode: String,
|
||||||
|
padding: String,
|
||||||
|
iv: String
|
||||||
|
): String? {
|
||||||
|
return createSymmetricCrypto("DESede/${mode}/${padding}", key, iv)
|
||||||
|
.encryptBase64(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 3DES加密并转为Base64,算法参数经过Base64加密
|
||||||
|
*
|
||||||
|
* @param data 被加密的字符串
|
||||||
|
* @param key Base64后的密钥
|
||||||
|
* @param mode 模式
|
||||||
|
* @param padding 补码方式
|
||||||
|
* @param iv Base64后的加盐
|
||||||
|
* @return 加密后的Base64
|
||||||
|
*/
|
||||||
|
@Deprecated(
|
||||||
|
"过于繁琐弃用",
|
||||||
|
ReplaceWith("createSymmetricCrypto(transformation, key, iv).encryptBase64(data)")
|
||||||
|
)
|
||||||
|
fun tripleDESEncodeArgsBase64Str(
|
||||||
|
data: String,
|
||||||
|
key: String,
|
||||||
|
mode: String,
|
||||||
|
padding: String,
|
||||||
|
iv: String
|
||||||
|
): String? {
|
||||||
|
return createSymmetricCrypto(
|
||||||
|
"DESede/${mode}/${padding}",
|
||||||
|
Base64.decode(key, Base64.NO_WRAP),
|
||||||
|
iv.encodeToByteArray()
|
||||||
|
).encryptBase64(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
//******************消息摘要/散列消息鉴别码************************//
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成摘要,并转为16进制字符串
|
||||||
|
*
|
||||||
|
* @param data 被摘要数据
|
||||||
|
* @param algorithm 签名算法
|
||||||
|
* @return 16进制字符串
|
||||||
|
*/
|
||||||
|
fun digestHex(
|
||||||
|
data: String,
|
||||||
|
algorithm: String,
|
||||||
|
): String {
|
||||||
|
return DigestUtil.digester(algorithm).digestHex(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成摘要,并转为Base64字符串
|
||||||
|
*
|
||||||
|
* @param data 被摘要数据
|
||||||
|
* @param algorithm 签名算法
|
||||||
|
* @return Base64字符串
|
||||||
|
*/
|
||||||
|
fun digestBase64Str(
|
||||||
|
data: String,
|
||||||
|
algorithm: String,
|
||||||
|
): String {
|
||||||
|
return Base64.encodeToString(DigestUtil.digester(algorithm).digest(data), Base64.NO_WRAP)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成散列消息鉴别码,并转为16进制字符串
|
||||||
|
*
|
||||||
|
* @param data 被摘要数据
|
||||||
|
* @param algorithm 签名算法
|
||||||
|
* @param key 密钥
|
||||||
|
* @return 16进制字符串
|
||||||
|
*/
|
||||||
|
@Suppress("FunctionName")
|
||||||
|
fun HMacHex(
|
||||||
|
data: String,
|
||||||
|
algorithm: String,
|
||||||
|
key: String
|
||||||
|
): String {
|
||||||
|
return HMac(algorithm, key.toByteArray()).digestHex(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成散列消息鉴别码,并转为Base64字符串
|
||||||
|
*
|
||||||
|
* @param data 被摘要数据
|
||||||
|
* @param algorithm 签名算法
|
||||||
|
* @param key 密钥
|
||||||
|
* @return Base64字符串
|
||||||
|
*/
|
||||||
|
@Suppress("FunctionName")
|
||||||
|
fun HMacBase64(
|
||||||
|
data: String,
|
||||||
|
algorithm: String,
|
||||||
|
key: String
|
||||||
|
): String {
|
||||||
|
return Base64.encodeToString(
|
||||||
|
HMac(algorithm, key.toByteArray()).digest(data),
|
||||||
|
Base64.NO_WRAP
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,10 +4,6 @@ import android.net.Uri
|
|||||||
import android.util.Base64
|
import android.util.Base64
|
||||||
import androidx.annotation.Keep
|
import androidx.annotation.Keep
|
||||||
import cn.hutool.core.util.HexUtil
|
import cn.hutool.core.util.HexUtil
|
||||||
import cn.hutool.crypto.SecureUtil
|
|
||||||
import cn.hutool.crypto.digest.DigestUtil
|
|
||||||
import cn.hutool.crypto.digest.HMac
|
|
||||||
import cn.hutool.crypto.symmetric.SymmetricCrypto
|
|
||||||
import io.legado.app.constant.AppConst
|
import io.legado.app.constant.AppConst
|
||||||
import io.legado.app.constant.AppConst.dateFormat
|
import io.legado.app.constant.AppConst.dateFormat
|
||||||
import io.legado.app.constant.AppLog
|
import io.legado.app.constant.AppLog
|
||||||
@@ -47,7 +43,7 @@ import java.util.zip.ZipInputStream
|
|||||||
*/
|
*/
|
||||||
@Keep
|
@Keep
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
interface JsExtensions {
|
interface JsExtensions : JsEncodeUtils {
|
||||||
|
|
||||||
fun getSource(): BaseSource?
|
fun getSource(): BaseSource?
|
||||||
|
|
||||||
@@ -667,126 +663,4 @@ interface JsExtensions {
|
|||||||
return AppConst.androidId
|
return AppConst.androidId
|
||||||
}
|
}
|
||||||
|
|
||||||
//******************对称加密解密************************//
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 在js中这样使用
|
|
||||||
* java.createSymmetricCrypto(transformation, key, iv).decrypt(data)
|
|
||||||
* java.createSymmetricCrypto(transformation, key, iv).decryptStr(data)
|
|
||||||
|
|
||||||
* java.createSymmetricCrypto(transformation, key, iv).encrypt(data)
|
|
||||||
* java.createSymmetricCrypto(transformation, key, iv).encryptBase64(data)
|
|
||||||
* java.createSymmetricCrypto(transformation, key, iv).encryptHex(data)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* 调用SymmetricCrypto key为null时使用随机密钥*/
|
|
||||||
fun createSymmetricCrypto(
|
|
||||||
transformation: String,
|
|
||||||
key: ByteArray?,
|
|
||||||
iv: ByteArray?
|
|
||||||
): SymmetricCrypto {
|
|
||||||
val symmetricCrypto = SymmetricCrypto(transformation, key)
|
|
||||||
return if (iv != null && iv.isNotEmpty()) symmetricCrypto.setIv(iv) else symmetricCrypto
|
|
||||||
}
|
|
||||||
|
|
||||||
fun createSymmetricCrypto(
|
|
||||||
transformation: String,
|
|
||||||
key: ByteArray
|
|
||||||
): SymmetricCrypto {
|
|
||||||
return createSymmetricCrypto(transformation, key, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun createSymmetricCrypto(
|
|
||||||
transformation: String,
|
|
||||||
key: String
|
|
||||||
): SymmetricCrypto {
|
|
||||||
return createSymmetricCrypto(transformation, key, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun createSymmetricCrypto(
|
|
||||||
transformation: String,
|
|
||||||
key: String,
|
|
||||||
iv: String?
|
|
||||||
): SymmetricCrypto {
|
|
||||||
return createSymmetricCrypto(
|
|
||||||
transformation, key.encodeToByteArray(), iv?.encodeToByteArray()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//******************消息摘要/散列消息鉴别码************************//
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成摘要,并转为16进制字符串
|
|
||||||
*
|
|
||||||
* @param data 被摘要数据
|
|
||||||
* @param algorithm 签名算法
|
|
||||||
* @return 16进制字符串
|
|
||||||
*/
|
|
||||||
fun digestHex(
|
|
||||||
data: String,
|
|
||||||
algorithm: String,
|
|
||||||
): String {
|
|
||||||
return DigestUtil.digester(algorithm).digestHex(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成摘要,并转为Base64字符串
|
|
||||||
*
|
|
||||||
* @param data 被摘要数据
|
|
||||||
* @param algorithm 签名算法
|
|
||||||
* @return Base64字符串
|
|
||||||
*/
|
|
||||||
fun digestBase64Str(
|
|
||||||
data: String,
|
|
||||||
algorithm: String,
|
|
||||||
): String {
|
|
||||||
return Base64.encodeToString(DigestUtil.digester(algorithm).digest(data), Base64.NO_WRAP)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成散列消息鉴别码,并转为16进制字符串
|
|
||||||
*
|
|
||||||
* @param data 被摘要数据
|
|
||||||
* @param algorithm 签名算法
|
|
||||||
* @param key 密钥
|
|
||||||
* @return 16进制字符串
|
|
||||||
*/
|
|
||||||
@Suppress("FunctionName")
|
|
||||||
fun HMacHex(
|
|
||||||
data: String,
|
|
||||||
algorithm: String,
|
|
||||||
key: String
|
|
||||||
): String {
|
|
||||||
return HMac(algorithm, key.toByteArray()).digestHex(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成散列消息鉴别码,并转为Base64字符串
|
|
||||||
*
|
|
||||||
* @param data 被摘要数据
|
|
||||||
* @param algorithm 签名算法
|
|
||||||
* @param key 密钥
|
|
||||||
* @return Base64字符串
|
|
||||||
*/
|
|
||||||
@Suppress("FunctionName")
|
|
||||||
fun HMacBase64(
|
|
||||||
data: String,
|
|
||||||
algorithm: String,
|
|
||||||
key: String
|
|
||||||
): String {
|
|
||||||
return Base64.encodeToString(
|
|
||||||
HMac(algorithm, key.toByteArray()).digest(data),
|
|
||||||
Base64.NO_WRAP
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun md5Encode(str: String): String {
|
|
||||||
return MD5Utils.md5Encode(str)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun md5Encode16(str: String): String {
|
|
||||||
return MD5Utils.md5Encode16(str)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user