Hi Leute,
ich habe vor einiger Zeit eine kleine Chat-Anwendung mit Nodejs, Socketio und OpenPGP.js | OpenPGP JavaScript Implementation geschrieben und würde nun gern einen passende Android-App dazu erstellen.
Mein Problem ist das ich noch relativ neu bei dem Thema Java und Android Programmierung bin und kaum Tutorials zum Thema Java und PGP finde....
Im Internet bin ich auf folgende Library gestoßen:
bouncycastle.org
und noch ein passendens Tutorial:
Revisited: PGP Encryption/Decryption in Java | Waiting for Wit
Mit dieser Anleitung habe ich es geschafft eine Nachricht die Empfangen wird mit dem passenden PrivateKey + Passphrase zu entschlüsseln, nur verstehe ich nicht ganze wie ich die Daten vor dem Senden mit dem PublicKey verschlüsseln kann..
In der Anleitung und den anderen Tutorials im Internet die ich gefunden wird immer eine Datei verschlüsselt und kein String....
Die PublicKeys werden von einem Server per GET-Request heruntergeladen und sind deshalb nur als "String" vorhanden.
Könnt ihr mir erklären wie ich die Library mit einem String verwende ?
beste grüße
arpi
ich habe vor einiger Zeit eine kleine Chat-Anwendung mit Nodejs, Socketio und OpenPGP.js | OpenPGP JavaScript Implementation geschrieben und würde nun gern einen passende Android-App dazu erstellen.
Mein Problem ist das ich noch relativ neu bei dem Thema Java und Android Programmierung bin und kaum Tutorials zum Thema Java und PGP finde....
Im Internet bin ich auf folgende Library gestoßen:
bouncycastle.org
und noch ein passendens Tutorial:
Revisited: PGP Encryption/Decryption in Java | Waiting for Wit
Mit dieser Anleitung habe ich es geschafft eine Nachricht die Empfangen wird mit dem passenden PrivateKey + Passphrase zu entschlüsseln, nur verstehe ich nicht ganze wie ich die Daten vor dem Senden mit dem PublicKey verschlüsseln kann..
In der Anleitung und den anderen Tutorials im Internet die ich gefunden wird immer eine Datei verschlüsselt und kein String....
Java:
public static void encryptFile(
OutputStream out,
String fileName,
PGPPublicKey encKey,
boolean armor,
boolean withIntegrityCheck)
throws IOException, NoSuchProviderException, PGPException
{
Security.addProvider(new BouncyCastleProvider());
if (armor) {
out = new ArmoredOutputStream(out);
}
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
PGPCompressedDataGenerator comData = new PGPCompressedDataGenerator(PGPCompressedData.ZIP);
PGPUtil.writeFileToLiteralData(
comData.open(bOut),
PGPLiteralData.BINARY,
new File(fileName) );
comData.close();
BcPGPDataEncryptorBuilder dataEncryptor = new BcPGPDataEncryptorBuilder(PGPEncryptedData.TRIPLE_DES);
dataEncryptor.setWithIntegrityPacket(withIntegrityCheck);
dataEncryptor.setSecureRandom(new SecureRandom());
PGPEncryptedDataGenerator encryptedDataGenerator = new PGPEncryptedDataGenerator(dataEncryptor);
encryptedDataGenerator.addMethod(new BcPublicKeyKeyEncryptionMethodGenerator(encKey));
byte[] bytes = bOut.toByteArray();
OutputStream cOut = encryptedDataGenerator.open(out, bytes.length);
cOut.write(bytes);
cOut.close();
out.close();
}
Die PublicKeys werden von einem Server per GET-Request heruntergeladen und sind deshalb nur als "String" vorhanden.
Könnt ihr mir erklären wie ich die Library mit einem String verwende ?
beste grüße
arpi