From 275645315e2a3faa5ffe6f6fd01f9c8281c70b83 Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Wed, 15 Mar 2023 07:24:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=9D=9E=E5=AF=B9=E7=A7=B0?= =?UTF-8?q?=E5=8A=A0=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/help/crypto/AsymmetricCrypto.kt | 25 +++++++++++-------- .../java/io/legado/app/help/crypto/README.md | 1 - .../java/io/legado/app/help/crypto/Sign.kt | 6 +++-- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/crypto/AsymmetricCrypto.kt b/app/src/main/java/io/legado/app/help/crypto/AsymmetricCrypto.kt index a7b36a7ec..47c70b8cd 100644 --- a/app/src/main/java/io/legado/app/help/crypto/AsymmetricCrypto.kt +++ b/app/src/main/java/io/legado/app/help/crypto/AsymmetricCrypto.kt @@ -8,32 +8,35 @@ import java.io.InputStream class AsymmetricCrypto(algorithm: String) : HutoolAsymmetricCrypto(algorithm) { fun setPrivateKey(key: ByteArray): AsymmetricCrypto { - return setPrivateKey( + setPrivateKey( KeyUtil.generatePrivateKey(this.algorithm, key) ) + return this } fun setPrivateKey(key: String): AsymmetricCrypto = setPrivateKey(key.encodeToByteArray()) fun setPublicKey(key: ByteArray): AsymmetricCrypto { - return setPublicKey( + setPublicKey( KeyUtil.generatePublicKey(this.algorithm, key) ) + return this } fun setPublicKey(key: String): AsymmetricCrypto = setPublicKey(key.encodeToByteArray()) - private fun getKeyType(): KeyType { + private fun getKeyType(keyType: Int): KeyType { return when { - this.publicKey != null -> KeyType.PublicKey - this.privateKey != null -> KeyType.PrivateKey + keyType == 1 -> KeyType.PublicKey + keyType == 2 -> KeyType.PrivateKey else -> KeyType.SecretKey } } private fun cryptoDelegate( data: Any, + keyType: Int, func: (Any, KeyType) -> T ): T { - val keyType = getKeyType() + val keyType = getKeyType(keyType) return when { data is ByteArray -> func.invoke(data, keyType) data is String -> func.invoke(data, keyType) @@ -42,11 +45,11 @@ class AsymmetricCrypto(algorithm: String) : HutoolAsymmetricCrypto(algorithm) { } } - fun decrypt(data: Any): ByteArray? = cryptoDelegate(data, decrypt) - fun decryptStr(data: Any): String? = cryptoDelegate(data, decryptStr) + fun decrypt(data: Any, keyType: Int): ByteArray? = cryptoDelegate(data, keyType, decrypt) + fun decryptStr(data: Any, keyType: Int): String? = cryptoDelegate(data, keyType, decryptStr) - fun encrypt(data: Any): ByteArray? = cryptoDelegate(data, encrypt) - fun encryptHex(data: Any): String? = cryptoDelegate(data, encryptHex) - fun encryptBase64(data: Any): String? =cryptoDelegate(data, encryptBase64) + fun encrypt(data: Any, keyType: Int): ByteArray? = cryptoDelegate(data, keyType, encrypt) + fun encryptHex(data: Any, keyType: Int): String? = cryptoDelegate(data, keyType, encryptHex) + fun encryptBase64(data: Any, keyType: Int): String? =cryptoDelegate(data, keyType, encryptBase64) } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/help/crypto/README.md b/app/src/main/java/io/legado/app/help/crypto/README.md index 13c6380fd..24c898741 100644 --- a/app/src/main/java/io/legado/app/help/crypto/README.md +++ b/app/src/main/java/io/legado/app/help/crypto/README.md @@ -7,7 +7,6 @@ fun setPublicKey(key: String): T fun setPrivateKey(key: ByteArray): T fun setPrivateKey(key: String): T -//自动从公钥开始尝试 fun decrypt(data: Any): ByteArray? fun decryptStr(data: Any): String? diff --git a/app/src/main/java/io/legado/app/help/crypto/Sign.kt b/app/src/main/java/io/legado/app/help/crypto/Sign.kt index e63ee4456..8a52b75fb 100644 --- a/app/src/main/java/io/legado/app/help/crypto/Sign.kt +++ b/app/src/main/java/io/legado/app/help/crypto/Sign.kt @@ -6,16 +6,18 @@ import cn.hutool.crypto.KeyUtil class Sign(algorithm: String): HutoolSign(algorithm) { fun setPrivateKey(key: ByteArray): Sign { - return setPrivateKey( + setPrivateKey( KeyUtil.generatePrivateKey(this.algorithm, key) ) + return this } fun setPrivateKey(key: String): Sign = setPrivateKey(key.encodeToByteArray()) fun setPublicKey(key: ByteArray): Sign { - return setPublicKey( + setPublicKey( KeyUtil.generatePublicKey(this.algorithm, key) ) + return this } fun setPublicKey(key: String): Sign = setPublicKey(key.encodeToByteArray())