簡體   English   中英

需要從現有的 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()

誰能幫我解決這個問題,我是這個加密領域的新手,有人建議我從哪里可以更深入地了解密碼學,

從上面的代碼中,我剛剛了解到我們正在獲得兩個密鑰,例如 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

你的錯誤將消失

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM