简体   繁体   中英

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,

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

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.

I am also getting compile time error like Required PemObjectGenerator! found RSAPrivateKey

I can not help you in more detail but one thing i have found that

PEMWriter is already deprecated. You are not getting this message because you are importing PEMWritter from different package like util package

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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