mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
更新
This commit is contained in:
@@ -205,10 +205,14 @@ cipher.encryptBase64(data)
|
||||
cipher.encryptHex(data)
|
||||
```
|
||||
* 非对称加密
|
||||
> 输入参数密钥 支持ByteArray|**Utf8String**
|
||||
> 输入参数 key支持ByteArray|**Utf8String**
|
||||
```
|
||||
//创建cipher
|
||||
java.createAsymmetricCrypto(transformation, privateKey, publicKey)
|
||||
java.createAsymmetricCrypto(transformation)
|
||||
//设置密钥
|
||||
.setPublicKey(key)
|
||||
.setPrivateKey(key)
|
||||
|
||||
```
|
||||
> 解密加密参数 data支持ByteArray|Base64String|HexString|InputStream
|
||||
> keyType: 1 使用公钥 2 使用私钥
|
||||
@@ -222,10 +226,13 @@ cipher.encryptBase64(data, keyType)
|
||||
cipher.encryptHex(data, keyType)
|
||||
```
|
||||
* 签名
|
||||
> 输入参数密钥 支持ByteArray|**Utf8String**
|
||||
> 输入参数 key 支持ByteArray|**Utf8String**
|
||||
```
|
||||
//创建Sign
|
||||
java.createSign(algorithm, privateKey, publicKey)
|
||||
java.createSign(algorithm)
|
||||
//设置密钥
|
||||
.setPublicKey(key)
|
||||
.setPrivateKey(key)
|
||||
```
|
||||
> 签名参数 data支持ByteArray|inputStream|String
|
||||
```
|
||||
|
||||
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user