Merge remote-tracking branch 'origin/master'

This commit is contained in:
kunfei
2023-03-14 12:43:01 +08:00
2 changed files with 52 additions and 13 deletions

View File

@@ -190,21 +190,38 @@ deleteFile(path: String)
> AES transformation默认实现AES/ECB/PKCS5Padding
> DES transformation默认实现DES/ECB/PKCS5Padding
> TripleDES tansformation默认实现DESede/ECB/PKCS5Padding
> 内部实现为cn.hutool.crypto 解密加密接口支持ByteArray|Base64String|HexString|InputStream
> 输入参数key iv 支持ByteArray|Utf8String
> 如果key iv 为Hex Base64,且需要解码为ByteArray自行调用java.base64DecodeToByteArray java.hexDecodeToByteArray
> 输入参数key iv 支持ByteArray|**Utf8String**
```
//解密为ByteArray 字符串
java.createSymmetricCrypto(transformation, key, iv).decrypt(data)
java.createSymmetricCrypto(transformation, key, iv).decryptStr(data)
// 创建Cipher
java.createSymmetricCrypto(transformation, key, iv)
```
>解密加密参数 data支持ByteArray|Base64String|HexString|InputStream
```
//解密为ByteArray String
cipher.decrypt(data)
cipher.decryptStr(data)
//加密为ByteArray Base64字符 HEX字符
java.createSymmetricCrypto(transformation, key, iv).encrypt(data)
java.createSymmetricCrypto(transformation, key, iv).encryptBase64(data)
java.createSymmetricCrypto(transformation, key, iv).encryptHex(data)
cipher.encrypt(data)
cipher.encryptBase64(data)
cipher.encryptHex(data)
```
* 非对称加密 RSA/ECIES(不支持)
> algorithm: RSA, RSA/ECB/PKCS1Padding, RSA/ECB/NoPadding, RSA/None/NoPadding, RSA/None/NoPadding
> 输入参数密钥 支持ByteArray|**Utf8String**
```
//创建cipher
java.createAsymmetricCrypto(algorithm, privateKey, publicKey)
```
> 解密加密参数 data支持ByteArray|Base64String|HexString|InputStream
> keyType: 1 使用公钥 2 使用私钥
```
//解密为ByteArray String
cipher.decrypt(data, keyType)
cipher.decryptStr(data, keyType)
//加密为ByteArray Base64字符 HEX字符
cipher.encrypt(data, keyType)
cipher.encryptBase64(data, keyType)
cipher.encryptHex(data, keyType)
```
* 摘要
> MD5 SHA-1 SHA-224 SHA-256 SHA-384 SHA-512

View File

@@ -3,6 +3,7 @@ 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.symmetric.SymmetricCrypto
import io.legado.app.utils.MD5Utils
@@ -66,7 +67,28 @@ interface JsEncodeUtils {
transformation, key.encodeToByteArray(), iv?.encodeToByteArray()
)
}
//******************非对称加密解密************************//
/* keys都为null时使用随机密钥 */
fun createAsymmetricCrypto(
algorithm: String,
privateKey: ByteArray?,
publicKey: ByteArray?
): AsymmetricCrypto {
return AsymmetricCrypto(algorithm, privateKey, publicKey)
}
fun createAsymmetricCrypto(
algorithm: String,
privateKey: String?,
publicKey: String?
): AsymmetricCrypto {
return createAsymmetricCrypto(
algorithm,
privateKey?.encodeToByteArray(),
publicKey?.encodeToByteArray()
)
}
//******************对称加密解密old************************//
/////AES