lunedì 24 agosto 2020

Decrittare PGP in Kotlin per Android


Un comodo sistema per decrittare messaggi PGP con Kotlin su Android e' quello di usare la libreria https://github.com/Tlaster/KotlinPGP che in pratica e' un wrapper per BountyCastle 

in build.gradle(app)  si aggiunge
 
implementation 'moe.tlaster:kotlinpgp:1.0.20'

il codice e' sostanzialmente autoesplicativo per quanto e' semplice

=================================================

package com.luca.innocenti.pgp_k2

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import moe.tlaster.kotlinpgp.KotlinPGP

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var segreta = "-----BEGIN PGP PRIVATE KEY BLOCK-----\n" +
"\n" +
"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\n" +
"1XGfLXE+Y3U1WlFWF19aWRB054bdz5DDgBjIbw==\n" +
"=7ffe\n" +
"-----END PGP PRIVATE KEY BLOCK-----"

var encryptedData:String = "-----BEGIN PGP MESSAGE-----\n" +
"Version: OpenPGP.js v4.10.4\n" +
"Comment: https://openpgpjs.org\n" +
"\n" +
"wcBMA8AU2yvA99UdAQf+MylbvwaDMuqBneUH8kfMhq5CxCiUwORkZ4sE7/e+\n" +
"CIb+XTc5wYCuTIIqsv8JfcCjLs6fSwjlvEcvjSAn08geiIrquiBbgnkBWPR7\n" +
"iv7CMt6LPzcKfuHt18ZZarEQEf4mwH/DxU+ohYqXpRIuAVbGbcR1n1qWPkto\n" +
"hWDQQLXFZ/fAYKdZekA+SdvISrzpEbS+yy5y0K035oD0aqee6Up93jARvHTk\n" +
"R7kWuBCFoMk23PDTZM+Hv9DNumOXIOm/avZfbVr4I0O0LYlCaq1QOkmV1sfq\n" +
"P2lLD2cGgYp0c6VeLCb9/bbZx/UXPBiakXS3dH09jDE7zUXvk9mrPFz3YlA5\n" +
"M9I/AViN02M0pF83CYzDqCkJ4GkzjAv50bXWzn4ZS0nNR1dl9rY/Ve6KSGiV\n" +
"kTRtpLQ17TI1awzTg4wyifMkrYNW\n" +
"=xPR8\n" +
"-----END PGP MESSAGE-----"

val decrypt = KotlinPGP.decrypt(segreta, "password", encryptedData)
Log.d("test", decrypt.result)

}
}

Nessun commento:

Posta un commento

Regressione per illite su suoli naturali

Il dataset visto nel precedente post e' fornito anche da determinazione mineralogiche come la speciazione delle argille. Ho provato a ...