Tôi có mảng byte của Khóa công cộng RSA. Tôi tìm thấy trên internet mà tôi có thể tạo ra một đối tượng PublicKey thực sự của nó bằng cách sử dụng mã này:Java: Cách tạo Khóa công cộng RSA từ chuỗi
PublicKey publicKey =
KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(bytes));
Nhưng mỗi khi tôi chạy mã này, tôi nhận được một kết quả khác cho dữ liệu được mã hóa bằng khóa đó. Tôi chắc chắn dữ liệu tôi muốn mã hóa luôn giống nhau, vì vậy mảng byte biểu thị khóa.
Điều này có bình thường không?
Dưới đây là mã của tôi luôn sản xuất ra khác:
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());
Đây có lẽ là một phần của thuật toán mã hóa bất đối xứng?
Cảm ơn.
RSA không xác định. – SLaks
@SLaks: Bạn có muốn đăng câu trả lời đó không? Đó là chính xác: D Tôi sẽ cung cấp cho 35 điểm rep. –
Thực ra, 15; Tôi đã đạt giới hạn đại diện từ lâu rồi. :) – SLaks