This commit is contained in:
Xwite
2023-03-14 22:34:25 +08:00
parent edb4ac5930
commit 56300a0531
3 changed files with 88 additions and 37 deletions
@@ -3,10 +3,10 @@ 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.asymmetric.AsymmetricCrypto
import cn.hutool.crypto.asymmetric.Sign
import cn.hutool.crypto.asymmetric.*
import cn.hutool.crypto.symmetric.SymmetricCrypto
import io.legado.app.utils.MD5Utils
import io.legado.app.utils.*
/**
* js加解密扩展类, 在js中通过java变量调用
@@ -72,43 +72,16 @@ interface JsEncodeUtils {
/* keys都为null时使用随机密钥 */
fun createAsymmetricCrypto(
transformation: String,
privateKey: ByteArray?,
publicKey: ByteArray?
transformation: String
): AsymmetricCrypto {
return AsymmetricCrypto(transformation, privateKey, publicKey)
return AsymmetricCrypto(transformation)
}
fun createAsymmetricCrypto(
transformation: String,
privateKey: String?,
publicKey: String?
): AsymmetricCrypto {
return createAsymmetricCrypto(
transformation,
privateKey?.encodeToByteArray(),
publicKey?.encodeToByteArray()
)
}
//******************签名************************//
fun createSign(
algorithm: String,
privateKey: String?,
publicKey: String?
algorithm: String
): Sign {
return createSign(
algorithm,
privateKey?.encodeToByteArray(),
publicKey?.encodeToByteArray()
)
}
fun createSign(
algorithm: String,
privateKey: ByteArray?,
publicKey: ByteArray?
): Sign {
return Sign(algorithm, privateKey, publicKey)
return Sign(algorithm)
}
//******************对称加密解密old************************//
@@ -0,0 +1,71 @@
package io.legado.app.utils
import cn.hutool.crypto.asymmetric.*
import cn.hutool.crypto.KeyUtil
import java.io.InputStream
fun AsymmetricCrypto.decrypt(data: Any, keyType: Int): ByteArray? {
return when {
data is ByteArray -> decrypt(data, KeyType(keyType))
data is String -> decrypt(data, KeyType(keyType))
data is InputStream -> decrypt(data, KeyType(keyType))
else -> null
}
}
fun AsymmetricCrypto.decryptStr(data: Any, keyType: Int): String? {
return when {
data is ByteArray -> decryptStr(data, KeyType(keyType))
data is String -> decryptStr(data, KeyType(keyType))
data is InputStream -> decryptStr(data, KeyType(keyType))
else -> null
}
}
fun AsymmetricCrypto.encrypt(data: Any, keyType: Int): ByteArray? {
return when {
data is ByteArray -> encrypt(data, KeyType(keyType))
data is String -> encrypt(data, KeyType(keyType))
data is InputStream -> encrypt(data, KeyType(keyType))
else -> null
}
}
fun AsymmetricCrypto.encryptBase64(data: Any, keyType: Int): String? {
return when {
data is ByteArray -> encryptBase64(data, KeyType(keyType))
data is String -> encryptBase64(data, KeyType(keyType))
data is InputStream -> encryptBase64(data, KeyType(keyType))
else -> null
}
}
fun AsymmetricCrypto.encryptHex(data: Any, keyType: Int): String? {
return when {
data is ByteArray -> encryptHex(data, KeyType(keyType))
data is String -> encryptHex(data, KeyType(keyType))
data is InputStream -> encryptHex(data, KeyType(keyType))
else -> null
}
}
fun AsymmetricCrypto.setPrivateKey(privateKey: ByteArray): AsymmetricCrypto {
return setPrivateKey(KeyUtil.generatePrivateKey(this.algorithm, privateKey))
}
fun AsymmetricCrypto.setPrivateKey(privateKey: String): AsymmetricCrypto = setPrivateKey(privateKey.encodeToByteArray())
fun AsymmetricCrypto.setPublicKey(publicKey: ByteArray): AsymmetricCrypto {
return setPublicKey(KeyUtil.generatePublicKey(this.algorithm, publicKey))
}
fun AsymmetricCrypto.setPublicKey(publicKey: ByteArray): AsymmetricCrypto = setPublicKey(publicKey.encodeToByteArray())
fun Sign.setPrivateKey(privateKey: ByteArray): Sign {
return setPrivateKey(KeyUtil.generatePrivateKey(this.algorithm, privateKey))
}
fun Sign.setPrivateKey(privateKey: ByteArray): Sign = setPrivateKey(privateKey.encodeToByteArray())
fun Sign.setPublicKey(publicKey: ByteArray): Sign {
return setPublicKey(KeyUtil.generatePublicKey(this.algorithm, publicKey))
}
fun Sign.setPublicKey(publicKey: ByteArray): Sign = setPublicKey(publicKey.encodeToByteArray())