Java: Как создать открытый ключ RSA из строки

У меня есть массив байтов открытого ключа RSA. В Интернете я обнаружил, что могу создать для него настоящий объект PublicKey, используя этот код:

PublicKey publicKey = 
    KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(bytes));

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

Это нормально?

Вот мой код, всегда выдающий другой результат:

byte[] keyBytes = Base64.decodeBase64(rsa_1024_public_key);
      // rsa_1024_public key is a constant String

Cipher c = Cipher.getInstance("RSA");

PublicKey publicKey =
   KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(keyBytes));

c.init(Cipher.ENCRYPT_MODE, publicKey);

return c.doFinal(password.getBytes());

Вероятно, это часть алгоритма асимметричного шифрования?

Спасибо.

8
задан Martijn Courteaux 12 December 2011 в 21:11
поделиться