Cho java.security.interfaces.RSAKey, làm cách nào để có kích thước?Cách lấy kích thước của khóa RSA trong Java
Trả lời
Bạn có thể thử này:
key.getModulus().bitLength();
Kích thước của một khóa RSA là số bit trong mô đun của nó, vì vậy bạn muốn myRSAKey.getModulus().bitLength()
.
(EDIT: Tôi đã viết phản hồi này trước khi tôi hiểu các hạn chế được đặt trên các số nguyên nguyên được tạo cho khóa RSA. http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf Bây giờ tôi tin rằng bất kỳ trình tạo khóa tốt nào đều phải đảm bảo rằng mô đun nằm trong khoảng từ 2^(n- 1) và 2^n-1. Do đó, biểu diễn hai bổ sung tối thiểu của mô đun sẽ luôn có chính xác số bit được chỉ định cho độ dài khóa tại thời điểm tạo khóa. Ví dụ: nếu bạn tạo Khóa 2048 bit, sau đó key.getModulus(). BitLength() sẽ luôn trả về 2048.)
Trả lời một giá trị không chính xác khi bit quan trọng nhất của mô đun là 0? Ví dụ, đối với khóa 2048 bit, nếu bit quan trọng nhất của mô đun là 0, thì key.getModulus().bitLength()
sẽ trả lại 2047 (hoặc ít hơn nếu nhiều bit hơn là 0). Tôi nghĩ rằng kết quả mong muốn trong trường hợp này thực sự sẽ là 2048.
Các tài liệu cho BigInteger.bitLength() đọc như sau:
Trả về số bit trong các đại diện two's-bổ sung tối thiểu của BigInteger này, trừ một chút dấu hiệu. Đối với các BigIntegers dương, điều này tương đương với số bit trong biểu diễn nhị phân thông thường. (? Tính (ceil (log2 (điều này < 0 -đây:. Này + 1))))
tôi sợ rằng người ta cần thực hiện một số giả định về những gì kích thước phím có thể được. Bạn sẽ phải giả định, ví dụ, rằng bạn sẽ chỉ bao giờ thấy 1024, phím 2048, hoặc 4096-bit và sau đó làm điều gì đó như:
int keySize;
int bitLength = key.getModulus().bitLength();
if (bitLength <= 512) {
throw new IllegalArgumentException(...)
}
else if (bitLength <= 1024) {
keySize = 1024;
}
else if (bitLength <= 2048) {
keySize = 2048;
}
else if (bitLength <= 4096) {
keySize = 4096;
}
else {
throw new IllegalArgumentException(...)
}
return keySize;
Mã này vẫn có thể là sai lầm trên (rất hiếm) ví dụ, khi 1048 bit đầu tiên của khóa 2048 bit là tất cả 0. Tôi nghĩ rằng đó không phải là điều đáng lo ngại.
Mã này không đúng trong mọi dịp. 'key.getModulus(). bitLength()' là giá trị được xác định bởi các thuật ngữ "key size" hoặc "key length". Thay thế nó bằng các giá trị được chọn tùy ý là sai. –
Oleg, bạn nói đúng, dĩ nhiên. Tôi đã thêm EDIT để giải thích sự hiểu lầm của tôi về các hạn chế về các yếu tố chính mà đi vào thế hệ quan trọng. –
Nếu vẫn còn hoang tưởng trên máy phát điện tệ hại, người ta có thể sử dụng làm tròn lên: keySize = ((bitLength + 127)/128) * 128. Tốt hơn là đoán. Và cơ hội của 128 bit cao là tất cả các số không, tốt, theo thứ tự 1 trong 2^128. –
- 1. Kích thước khóa AES trong Java
- 2. Lấy kích thước màn hình trong Java
- 3. Lấy kích thước của các kích thước trong mảng
- 4. Cách lấy kích thước của NSString
- 5. Cách lấy Kích thước (KB) của UIImage
- 6. lấy kích thước của nswindow
- 7. Lấy kích thước của ZipInputStream
- 8. Java Reflection - Lấy kích thước của đối tượng mảng
- 9. Cách tạo khóa Riêng RSA từ chuỗi * pem trong Java
- 10. kích thước khối tối đa RSA nào để mã hóa?
- 11. Cách tính kích thước của văn bản mã hóa RSA bằng cách sử dụng kích thước khóa và độ dài văn bản rõ ràng?
- 12. Cách lấy kích thước của một vùng trong JavaCV
- 13. Cách lấy kích thước của một phạm vi trong Excel
- 14. Cách lấy kích thước mảng
- 15. Cách lấy kích thước tệp
- 16. Java: Cách tạo Khóa công cộng RSA từ chuỗi
- 17. Làm cách nào để lấy kích thước khóa của chứng chỉ
- 18. Lấy kích thước của nút - JavaFX 2
- 19. Lấy kích thước của ActionScript 3 Dictionary
- 20. Lấy kích thước của một listview
- 21. Lấy kích thước của một mảng 2D
- 22. cách lấy kích thước Heap của một chương trình
- 23. Lấy kích thước con trỏ trong C
- 24. Lấy kích thước của thư mục hoặc tập tin
- 25. Giới hạn kích thước tối đa của HashMap trong Java
- 26. lấy kích thước của mảng đa chiều trong ruby
- 27. Java InputStream kích thước
- 28. Lấy kích thước văn bản trong SFML
- 29. Kích thước Java ImageIcon
- 30. Cách lấy kích thước đối tượng trong bộ nhớ?
không đăng hai lần: http://stackoverflow.com/questions/2921508/trying-to-understand-java-rsa-key-size – leonbloy