更新非对称加密
This commit is contained in:
@@ -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())
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user