需要从现有 Android 代码中了解基本的加密
Need basic encryption understanding from existing Android code
我是 Android 的新人,我已经开始处理具有一些加密算法的现有项目,
下面是现有代码
var secureRandom = SecureRandom()
var masterKey = ByteArray(32)
secureRandom.nextBytes(masterKey)
var keyGen = KeyPairGenerator.getInstance("RSA")
keyGen.initialize(2048)
var keyPair = keyGen.generateKeyPair()
var pubKey = keyPair.public
var subjectPublicKeyInfo = SubjectPublicKeyInfo.getInstance(ASN1Sequence.getInstance(pubKey.encoded))
var pubKeyEncoded = Base64.encodeToString(subjectPublicKeyInfo.parsePublicKey().encoded, Base64.DEFAULT)
var sb = StringBuilder()
sb.append("-----BEGIN RSA PUBLIC KEY-----\n")
sb.append(pubKeyEncoded)
sb.append("\n-----END RSA PUBLIC KEY-----\n")
val publicKey = sb.toString()
val privateKey = keyPair.private as RSAPrivateKey
val string = StringWriter()
var writer = PemWriter(string)
writer.writeObject(privateKey)//<-----Getting an error like Type Mismatch
writer.close()
任何人都可以帮助我如何解决这个问题,我在这个加密领域是全新的,任何人都建议我从哪里可以更深入地了解密码学,
从上面的代码我刚刚了解到我们得到了两个密钥,例如 public 密钥和 AES
的私钥
我们正在用下面的代码public加密密钥
var subjectPublicKeyInfo = SubjectPublicKeyInfo.getInstance(ASN1Sequence.getInstance(pubKey.encoded))
var pubKeyEncoded = Base64.encodeToString(subjectPublicKeyInfo.parsePublicKey().encoded, Base64.DEFAULT)
但是我还是不明白SubjectPublicKeyInfo, ASN1Sequence, PemWriter 有什么用,有知道的请解释一下。
我也遇到编译时错误,例如 Required PemObjectGenerator! found RSAPrivateKey
我无法更详细地帮助你,但我发现了一件事
PEMWriter 已被弃用。您没有收到此消息,因为您正在从不同的包导入 PEMWritter,例如 util package
改为从
导入
org.spongycastle.openssl.PEMWriter
那时你会收到警告,好像它已被弃用,所以不要在下面使用
JcaPEMWriter
它是通过使用以下包
org.spngycastle.openssl.jcajce.JcaPEMWriter
你的错误将会消失
我是 Android 的新人,我已经开始处理具有一些加密算法的现有项目,
下面是现有代码
var secureRandom = SecureRandom()
var masterKey = ByteArray(32)
secureRandom.nextBytes(masterKey)
var keyGen = KeyPairGenerator.getInstance("RSA")
keyGen.initialize(2048)
var keyPair = keyGen.generateKeyPair()
var pubKey = keyPair.public
var subjectPublicKeyInfo = SubjectPublicKeyInfo.getInstance(ASN1Sequence.getInstance(pubKey.encoded))
var pubKeyEncoded = Base64.encodeToString(subjectPublicKeyInfo.parsePublicKey().encoded, Base64.DEFAULT)
var sb = StringBuilder()
sb.append("-----BEGIN RSA PUBLIC KEY-----\n")
sb.append(pubKeyEncoded)
sb.append("\n-----END RSA PUBLIC KEY-----\n")
val publicKey = sb.toString()
val privateKey = keyPair.private as RSAPrivateKey
val string = StringWriter()
var writer = PemWriter(string)
writer.writeObject(privateKey)//<-----Getting an error like Type Mismatch
writer.close()
任何人都可以帮助我如何解决这个问题,我在这个加密领域是全新的,任何人都建议我从哪里可以更深入地了解密码学,
从上面的代码我刚刚了解到我们得到了两个密钥,例如 public 密钥和 AES
的私钥我们正在用下面的代码public加密密钥
var subjectPublicKeyInfo = SubjectPublicKeyInfo.getInstance(ASN1Sequence.getInstance(pubKey.encoded))
var pubKeyEncoded = Base64.encodeToString(subjectPublicKeyInfo.parsePublicKey().encoded, Base64.DEFAULT)
但是我还是不明白SubjectPublicKeyInfo, ASN1Sequence, PemWriter 有什么用,有知道的请解释一下。
我也遇到编译时错误,例如 Required PemObjectGenerator! found RSAPrivateKey
我无法更详细地帮助你,但我发现了一件事
PEMWriter 已被弃用。您没有收到此消息,因为您正在从不同的包导入 PEMWritter,例如 util package
改为从
导入org.spongycastle.openssl.PEMWriter
那时你会收到警告,好像它已被弃用,所以不要在下面使用
JcaPEMWriter
它是通过使用以下包
org.spngycastle.openssl.jcajce.JcaPEMWriter
你的错误将会消失