Как расшифровать данные с помощью rsa privatekey - PullRequest
0 голосов
/ 16 июня 2009

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

У меня и моего друга одинаковый модуль RSA. Если я зашифрую данные с помощью открытого ключа, мой друг сможет расшифровать то же самое. Но если мой друг зашифрует данные открытым ключом, я не смогу расшифровать данные. Я получил сообщение об ошибке: «Данные должны начинаться с нуля»

public static byte[] encrypt(byte[] encrptdByte) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
    byte[] encryptionByte = null;
    Cipher cipher = Cipher.getInstance("RSA");
    cipher.init(Cipher.ENCRYPT_MODE, publicKey);
    encryptionByte = cipher.doFinal(encrptdByte);
    return encryptionByte;
}

public static void decrypt(byte[] encrptdByte) throws NoSuchAlgorithmException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException, InvalidKeyException {
    byte[] encryptionByte = null;
    Cipher cipher = Cipher.getInstance("RSA");
    cipher.init(Cipher.DECRYPT_MODE, publicKey);
    encryptionByte = cipher.doFinal(encrptdByte);

    System.out.println("Recovered String     :::  " + new String(encryptionByte));
}

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

Ответы [ 2 ]

6 голосов
/ 16 июня 2009

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

2 голосов
/ 16 июня 2009

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

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

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

...