【问题标题】:Need basic encryption understanding from existing Android code需要对现有 Android 代码有基本的加密理解
【发布时间】:2020-02-12 03:57:00
【问题描述】:

我是 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

【问题讨论】:

  • 我认为这篇文章将帮助您了解加密。 proandroiddev.com/…
  • HI @JAYMIN 首先感谢,但仍然不能用上面的代码证明

标签: android kotlin cryptography bouncycastle spongycastle


【解决方案1】:

我无法为您提供更详细的帮助,但我发现了一件事

PEMWriter 已被弃用。您没有收到此消息,因为您正在从不同的包(如 util 包)导入 PEMWritter

改为从

导入
org.spongycastle.openssl.PEMWriter

那时你会收到警告,就像它已被弃用,所以不要在下面使用

JcaPEMWriter

它是通过使用以下包

org.spngycastle.openssl.jcajce.JcaPEMWriter

你的错误会消失

【讨论】:

  • 好的让我试试
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多