Looking for java Keywords? Try Ask4Keywords

Java Language Шифрование и расшифровка данных с помощью открытых / закрытых ключей


пример

Для шифрования данных с помощью открытого ключа:

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));

Производит вывод, аналогичный:

Message: Hello
Encrypted: 5641FBB9558ECFA9ED...

Обратите внимание, что при создании объекта Cipher вам нужно указать преобразование, совместимое с типом используемого ключа. (См. Стандартные имена алгоритмов JCA для списка поддерживаемых преобразований.). Для данных шифрования RSA длина message.getBytes() должна быть меньше размера ключа. См. Этот SO-ответ для подробностей.

Чтобы расшифровать данные:

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);

Производит следующий вывод:

Decrypted: Hello