Android-RSA-Verschlüsselung von public string

Ich arbeite an einem android-Anwendung, wo ich möchte, die der Benutzer zum verschlüsseln von Nachrichten mit anderen öffentlichen Schlüssel. Das system generiert ein öffentliches/privates Schlüsselpaar und dann Nachrichten gesendet werden können, um andere Nutzer heimlich.

Ich bin erstellen eines Verschlüsselungs-Klasse, die sich um die Verschlüsselung/Entschlüsselung von Nachrichten. Ich bin leider mit einigen Problemen.

In dieser Methode, möchte ich übergeben Sie die Benutzer den geheimen Schlüssel (private key) sowie die Nachricht, die Sie verschlüsseln möchten. Ich möchte das Geheimnis um die Benutzer-definiert sind (wie "MySecretPassword").

public static void lock(String secret, String textToEncrypt) {
    try {
        //Convert the public key string into a key
        byte[] encodedPublicKey = Base64.decode(secret.getBytes("utf-8"),Base64.DEFAULT);
        X509EncodedKeySpec spec = new X509EncodedKeySpec(encodedPublicKey);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey publickey = keyFactory.generatePublic(spec); //Crash Here
        PrivateKey privateKey = keyFactory.generatePrivate(spec);

        //Encrypt Message
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, publickey);
        byte[] encryptedBytes = cipher.doFinal(textToEncrypt.getBytes());
        Log.d(TAG,"Encrypted: "+new String(encryptedBytes));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Ausnahme ist wie folgt:

java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0c0740b0:ASN.1 encoding routines:ASN1_get_object:TOO_LONG

Was vermisse ich hier? Bin ich etwas fehlt offensichtlich oder bin ich Missverständnis, wie diese tools arbeiten? Ich habe diese javascript-Bibliothek für public/private key-Verschlüsselung vor und versuche, etwas ähnliches zu tun hier. Ich würde es begrüßen, wenn jemand könnte mich in die richtige Richtung 🙂

  • "Andere Benutzer können die Nachrichten entschlüsselt werden, die mit Ihrem öffentlichen Schlüssel." Sie sind also nicht geheim, denn jeder kennt den öffentlichen Schlüssel? Ihr Fehler: Sie wollen nicht, um einen Schlüssel erzeugen, basiert auf X509-codierte Daten, die Sie erzeugen wollen, basiert auf einem Kennwort: stackoverflow.com/a/992413/995891
  • Ah, ich gemischter Dinge, während Sie Tippen. Sollte der Benutzer verschlüsseln Sie eine Nachricht mit Ihrem Ziel-dem öffentlichen Schlüssel (z.B. wenn ich eine Nachricht senden wollen auf mein Freund, ich verschlüsseln mit dem bekannten öffentlichen Schlüssel). Ich nehme einen Blick auf den link, den Sie gepostet 🙂
  • Vielleicht ist es nur ein Tippfehler ist, aber der öffentliche Schlüssel ist allen wohlbekannt, Sie können die Daten verschlüsseln, die nur der Empfänger (= Besitzer des privaten Schlüssel) entschlüsseln kann. Das ist der Weg, es ist sicher, um Nachrichten zu senden. edit: yep.
InformationsquelleAutor Pancake | 2016-05-11
Schreibe einen Kommentar