Java Language Crypter et déchiffrer des données avec des clés publiques / privées


Exemple

Pour chiffrer des données avec une clé publique:

final Cipher rsa = Cipher.getInstance("RSA");

rsa.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());
rsa.update(message.getBytes());
final byte[] result = rsa.doFinal();

System.out.println("Message: " + message);
System.out.println("Encrypted: " + DatatypeConverter.printHexBinary(result));

Produit une sortie similaire à:

Message: Hello
Encrypted: 5641FBB9558ECFA9ED...

Notez que lors de la création de l'objet Cipher , vous devez spécifier une transformation compatible avec le type de clé utilisé. (Voir Noms des algorithmes standard JCA pour obtenir une liste des transformations prises en charge.). Pour les données de chiffrement RSA, la longueur du message.getBytes() doit être inférieure à la taille de la clé. Voir ce SO Réponse pour les détails.

Pour déchiffrer les données:

final Cipher rsa = Cipher.getInstance("RSA");

rsa.init(Cipher.DECRYPT_MODE, keyPair.getPrivate());
rsa.update(cipherText);
final String result = new String(rsa.doFinal());

System.out.println("Decrypted: " + result);

Produit la sortie suivante:

Decrypted: Hello