android - 需要对现有 Android 代码有基本的加密理解
问题描述
我是 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()
谁能帮我解决这个问题,我在这个加密领域是全新的,有人建议我从哪里可以更深入地了解密码学,
从上面的代码我刚刚了解到我们得到了两个密钥,比如 AES 的公钥和私钥
我们正在通过以下代码加密公钥
var subjectPublicKeyInfo = SubjectPublicKeyInfo.getInstance(ASN1Sequence.getInstance(pubKey.encoded))
var pubKeyEncoded = Base64.encodeToString(subjectPublicKeyInfo.parsePublicKey().encoded, Base64.DEFAULT)
但是我仍然不明白 SubjectPublicKeyInfo、ASN1Sequence、PemWriter 的用途,如果有人知道的话,请解释一下。
我也收到了像Required PemObjectGenerator这样的编译时错误!找到RSAPrivateKey
解决方案
我不能更详细地帮助你,但我发现一件事
PEMWriter 已被弃用。您没有收到此消息,因为您正在从不同的包(如 util 包)导入 PEMWritter
而是从
org.spongycastle.openssl.PEMWriter
那时你会收到警告,就像它已被弃用,所以不要在下面使用
JcaPEMWriter
它是通过使用以下包
org.spngycastle.openssl.jcajce.JcaPEMWriter
你的错误将消失
推荐阅读
- java - 无法使用 CompileSDKVersion 'android-Q' 安装 apk
- java - 如何获取多个膨胀视图的 id?
- android - 将图像拟合到 xml 形状
- javascript - 当我无法声明字符串时,如何在 java 脚本中获得正则表达式匹配的第 1 组的结果?
- php - 将旧的 md5 密码转换为 password_hash
- slack-api - chat.postMessage xoxb 令牌,用于向所有工作区中的所有用户发布消息
- typo3-8.x - TYPO3 Fluid 中的图像未显示,出现错误
- vba - 调用关键字 - 是否已弃用
- python - Selenium 等待队列
- javascript - jQuery click:该功能在我单击按钮之前正在运行。要执行的代码已经包含在 click() 中的函数中