У меня есть массив байтов открытого ключа 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());
Вероятно, это часть алгоритма асимметричного шифрования?
Спасибо.