更新非对称加密

This commit is contained in:
Xwite
2023-03-15 07:24:56 +08:00
parent 74a24a19b7
commit 25392e3af8
3 changed files with 18 additions and 14 deletions
@@ -8,32 +8,35 @@ import java.io.InputStream
class AsymmetricCrypto(algorithm: String) : HutoolAsymmetricCrypto(algorithm) { class AsymmetricCrypto(algorithm: String) : HutoolAsymmetricCrypto(algorithm) {
fun setPrivateKey(key: ByteArray): AsymmetricCrypto { fun setPrivateKey(key: ByteArray): AsymmetricCrypto {
return setPrivateKey( setPrivateKey(
KeyUtil.generatePrivateKey(this.algorithm, key) KeyUtil.generatePrivateKey(this.algorithm, key)
) )
return this
} }
fun setPrivateKey(key: String): AsymmetricCrypto = setPrivateKey(key.encodeToByteArray()) fun setPrivateKey(key: String): AsymmetricCrypto = setPrivateKey(key.encodeToByteArray())
fun setPublicKey(key: ByteArray): AsymmetricCrypto { fun setPublicKey(key: ByteArray): AsymmetricCrypto {
return setPublicKey( setPublicKey(
KeyUtil.generatePublicKey(this.algorithm, key) KeyUtil.generatePublicKey(this.algorithm, key)
) )
return this
} }
fun setPublicKey(key: String): AsymmetricCrypto = setPublicKey(key.encodeToByteArray()) fun setPublicKey(key: String): AsymmetricCrypto = setPublicKey(key.encodeToByteArray())
private fun getKeyType(): KeyType { private fun getKeyType(keyType: Int): KeyType {
return when { return when {
this.publicKey != null -> KeyType.PublicKey keyType == 1 -> KeyType.PublicKey
this.privateKey != null -> KeyType.PrivateKey keyType == 2 -> KeyType.PrivateKey
else -> KeyType.SecretKey else -> KeyType.SecretKey
} }
} }
private fun <T> cryptoDelegate( private fun <T> cryptoDelegate(
data: Any, data: Any,
keyType: Int,
func: (Any, KeyType) -> T func: (Any, KeyType) -> T
): T { ): T {
val keyType = getKeyType() val keyType = getKeyType(keyType)
return when { return when {
data is ByteArray -> func.invoke(data, keyType) data is ByteArray -> func.invoke(data, keyType)
data is String -> 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<ByteArray?>(data, decrypt) fun decrypt(data: Any, keyType: Int): ByteArray? = cryptoDelegate<ByteArray?>(data, keyType, decrypt)
fun decryptStr(data: Any): String? = cryptoDelegate<String?>(data, decryptStr) fun decryptStr(data: Any, keyType: Int): String? = cryptoDelegate<String?>(data, keyType, decryptStr)
fun encrypt(data: Any): ByteArray? = cryptoDelegate<ByteArray?>(data, encrypt) fun encrypt(data: Any, keyType: Int): ByteArray? = cryptoDelegate<ByteArray?>(data, keyType, encrypt)
fun encryptHex(data: Any): String? = cryptoDelegate<String?>(data, encryptHex) fun encryptHex(data: Any, keyType: Int): String? = cryptoDelegate<String?>(data, keyType, encryptHex)
fun encryptBase64(data: Any): String? =cryptoDelegate<String?>(data, encryptBase64) fun encryptBase64(data: Any, keyType: Int): String? =cryptoDelegate<String?>(data, keyType, encryptBase64)
} }
@@ -7,7 +7,6 @@ fun setPublicKey(key: String): T
fun setPrivateKey(key: ByteArray): T fun setPrivateKey(key: ByteArray): T
fun setPrivateKey(key: String): T fun setPrivateKey(key: String): T
//自动从公钥开始尝试
fun decrypt(data: Any): ByteArray? fun decrypt(data: Any): ByteArray?
fun decryptStr(data: Any): String? fun decryptStr(data: Any): String?
@@ -6,16 +6,18 @@ import cn.hutool.crypto.KeyUtil
class Sign(algorithm: String): HutoolSign(algorithm) { class Sign(algorithm: String): HutoolSign(algorithm) {
fun setPrivateKey(key: ByteArray): Sign { fun setPrivateKey(key: ByteArray): Sign {
return setPrivateKey( setPrivateKey(
KeyUtil.generatePrivateKey(this.algorithm, key) KeyUtil.generatePrivateKey(this.algorithm, key)
) )
return this
} }
fun setPrivateKey(key: String): Sign = setPrivateKey(key.encodeToByteArray()) fun setPrivateKey(key: String): Sign = setPrivateKey(key.encodeToByteArray())
fun setPublicKey(key: ByteArray): Sign { fun setPublicKey(key: ByteArray): Sign {
return setPublicKey( setPublicKey(
KeyUtil.generatePublicKey(this.algorithm, key) KeyUtil.generatePublicKey(this.algorithm, key)
) )
return this
} }
fun setPublicKey(key: String): Sign = setPublicKey(key.encodeToByteArray()) fun setPublicKey(key: String): Sign = setPublicKey(key.encodeToByteArray())