简体   繁体   English

需要从现有的 Android 代码中了解基本的加密

[英]Need basic encryption understanding from existing Android code

I am new in Android and I have started to working on existing project which have some encryption algorithm,我是 Android 新手,我已经开始研究具有一些加密算法的现有项目,

Below is existing code以下是现有代码

    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()

Can anyone help me how to resolve this issue, I am totally new in this encryption fields, anyone suggest me from where I can get deeper understanding on cryptography,谁能帮我解决这个问题,我是这个加密领域的新手,有人建议我从哪里可以更深入地了解密码学,

from above code I have just understand that we are getting two keys like public key and private key for AES从上面的代码中,我刚刚了解到我们正在获得两个密钥,例如 AES 的公钥和私钥

We are encrypting public key by below code我们正在通过以下代码加密公钥

  var subjectPublicKeyInfo = SubjectPublicKeyInfo.getInstance(ASN1Sequence.getInstance(pubKey.encoded))
    var pubKeyEncoded = Base64.encodeToString(subjectPublicKeyInfo.parsePublicKey().encoded, Base64.DEFAULT)

But I still did not understand what will be use of SubjectPublicKeyInfo, ASN1Sequence, PemWriter if anyone have knowledge then please explain me.但是我仍然不明白 SubjectPublicKeyInfo、ASN1Sequence、PemWriter 有什么用,如果有人有知识,请解释一下。

I am also getting compile time error like Required PemObjectGenerator!我也收到了像Required PemObjectGenerator这样的编译时错误 found RSAPrivateKey找到RSAPrivateKey

I can not help you in more detail but one thing i have found that我无法更详细地帮助您,但我发现一件事

PEMWriter is already deprecated. PEMWriter 已被弃用。 You are not getting this message because you are importing PEMWritter from different package like util package您没有收到此消息,因为您是从不同的包(如 util 包)导入 PEMWritter

Instead import it from而是从

org.spongycastle.openssl.PEMWriter

at that time you will get warning like it is deprecated so instead of use below那时你会收到警告,因为它已被弃用,所以不要在下面使用

JcaPEMWriter

it is by using following package它是通过使用以下包

org.spngycastle.openssl.jcajce.JcaPEMWriter

your error will be gone你的错误将消失

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM