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.
вы можете сделать его детерминированным, выбрав неслучайный режим заполнения; однако это не будет безопасно.