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

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

спасибо.

1 ответов


ОГА не determinstic.

вы можете сделать его детерминированным, выбрав неслучайный режим заполнения; однако это не будет безопасно.