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

Physics informed neural network Fukuzono

Visto che puro ML non funziona per le serie tempo di cui mi sto occupando ed le regressioni basate su formule analitiche mostrano dei limiti...