Как расшифровать данные с помощью секретного ключа rsa

Я использую JAVA. Мой друг использует SYMBIAN

У меня и у моего друга одинаковый модуль rsa. Если я шифровать данные , используя открытый ключ , то мой друг способен общественных статических байт [] шифровать ( байты [] encrptdByte ) бросает NoSuchAlgorithmException , NoSuchPaddingException , InvalidKeyException , IllegalBlockSizeException , BadPaddingException { байт [] encryptionByte = NULL ; Шифр шифрования = Шифр . getInstance ( «RSA» ); шифр . init ( Cipher . ENCRYPT_MODE , publicKey ); encryptionByte = шифр . doFinal ( encrptdByte ); return encryptionByte ; } public static void decrypt ( byte [] encrptdByte ) throws NoSuchAlgorithmException , NoSuchPaddingException , IllegalBlockSizeException , BadPaddingException , InvalidKeyException { byte [] encryptionByte = null ; Шифр шифрования = Шифр . getInstance ( «RSA» ); шифр . init ( Cipher . DECRYPT_MODE , publicKey ); encryptionByte = шифр . doFinal ( encrptdByte ); Система . из . println ( «Восстановленная строка :::» + новая строка ( encryptionByte )); } то же самое. Но если мой друг шифрует данные открытым ключом, то я не могу расшифровать данные. Я получил сообщение об ошибке: «Данные должны начинаться с нуля»

decrypt

Спасибо Сунил

java,encryption,rsa,

-1

Ответов: 2


6

decryptФункция использует publicKey- откуда оно взялось? Обратите внимание, что данные, зашифрованные открытым ключом, должны быть дешифрованы с помощью соответствующего закрытого ключа, а не с тем же открытым ключом. Асимметричное шифрование, такое как RSA, имеет понятие о парах ключей, в которых каждый ключ в паре может расшифровать данные, зашифрованные другим ключом, в отличие от симметричного шифрования, такого как AES, где один и тот же ключ работает как для шифрования, так и для дешифрования.


2

Чтобы добавить предыдущий пост, нецелесообразно шифровать / расшифровывать данные в больших масштабах с помощью ассиметричного шифрования (поскольку он значительно медленнее симметричного шифрования). Наиболее практичным использованием асимметричного шифрования (например, RSA) является шифрование симметричных ключей (для AES или аналогичного алгоритма), которые использовались для шифрования данных, а также для подписи безопасного хэша в дайджесте сообщений (SHA-256 и т. Д.).

Зашифрованное сообщение обычно запечатывается в «конверте», который содержит зашифрованное сообщение, а также ключи, используемые для шифрования. Ключи, конечно же, зашифровываются с открытым ключом получателей, тем самым гарантируя, что только владелец может получить ключи.

Наконец, отправитель сообщения может дополнительно вычислить безопасный хэш сообщения и зашифровать его с помощью закрытого ключа отправителя. Получатель расшифровывает зашифрованный хеш (используя открытый ключ отправителя) и сравнивает с вычисленным хэшем, чтобы проверить личность отправителя.

Java, шифрование RSA,
Похожие вопросы