kotlin-非对称加密RSA
前言
kotlin-非对称加密RSA。
应用场景:数字签名(结合消息摘要实现)、校验数据完整性。
一、非对称加密
1.简介
公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。
- 常用算法:RSA
- 密钥对:公钥和私钥,必须由系统生成并存储
- 公钥加密,私钥解密;私钥加密,公钥解密。
- 公钥互换:两个组织或者人相互交换公钥
- 可逆,加密速度慢
2.非对称加密RSA-生成秘钥对
生成秘钥对
import java.security.KeyPairGenerator
fun main(agrs:Array<String>) {
val generator = KeyPairGenerator.getInstance("RSA")//秘钥对生成器
val keyPair = generator.genKeyPair()//生成秘钥对
val publicKey = keyPair.public//公钥
val privateKey = keyPair.private//私钥
println("publicKey="+Base64.getEncoder().encode(publicKey.encoded))
println("privateKey="+Base64.getEncoder().encode(privateKey.encoded))
}
3.非对称加密三步骤
非对称加密三步骤
import java.security.Key
import java.security.KeyPairGenerator
import javax.crypto.Cipher
fun main(agrs:Array<String>) {
val generator = KeyPairGenerator.getInstance("RSA")//秘钥对生成器
val keyPair = generator.genKeyPair()//生成秘钥对
val publicKey = keyPair.public//公钥
val privateKey = keyPair.private//私钥
println("publicKey="+Base64.getEncoder().encode(publicKey.encoded))
println("privateKey="+Base64.getEncoder().encode(privateKey.encoded))
//-----------------非对称加密三步骤----------------------------
//1.创建cipher对象
val cipher = Cipher.getInstance("RSA")
//2.初始化cipher
val key:Key? = null
cipher.init(Cipher.ENCRYPT_MODE, key)
//3.加密/解密
//略。
//-----------------非对称加密三步骤----------------------------
}
4.RSA分段解密
每次最大解密128字节
总结
以上就是今天要讲的内容,本文仅仅简单介绍了非对称加密RSA知识。