Cách tạo ngẫu nhiên một số nguyên tố lớn n bit sử dụng trong hệ mã RSA bằng thư viện BigInteger(Java)
Số nguyên tố lớn có ứng dụng quan trọng trong các hệ mật mã. Trong bài viết này, ta tìm hiểu cách tạo ra ngẫu nhiên một số nguyên tố lớn n bit bằng cách sử dụng thư viện BigInteger trong Java
1. Định nghĩa số nguyên tố
Số nguyên tố là số chỉ có 2 ước là 1 và chính nó. Tức là nó chia hết cho 1 và chính nó
VD: 2, 3, 5, 7, 11,...
2. Ứng dụng của số nguyên tố trong mật mã
Các số nguyên tố lớn là một trong các tham số an toàn quan trọng trong các thuật toán lược đồ mật mã hiện đại như thuật toán mã hóa khóa công khai RSA, lược đồ chữ ký số RSA, lược đồ trao đổi khóa Diffie-Hellman, lược đồ mã hóa Elgammal. Số nguyên tố lớn góp phần vào việc tăng độ an toán của các hệ mật
3. Các tạo một số nguyên tố lớn trong java
Java hỗ trợ thư viện BigInteger giúp ta dễ dang tạo ra một số nguyên tố lớn n bit một cách ngẫu nhiên
Trong ví dụ này, ta tạo ra một số nguyên tố lớn 3072 bit
import java.math.BigInteger;
import java.util.Random;
public class Prime {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 3072;
long t1 = System.currentTimeMillis();
BigInteger bigNum = BigInteger.valueOf(1);
Random rd = new Random();
bigNum = bigNum.probablePrime(n, rd);
long t2 = System.currentTimeMillis();
System.out.println(bigNum);
System.out.println(t2 - t1);
}
}
Kết quả:
5238771332367975187784295292119270669251074691248869250973536588308753993220552945705159694251037762672996939499497991324330822803734514472527118607654101271313685297311752271742666139896504238807517779043760534588300899156801538042102457670595497586754767781883090863885617056042498411279112413832745959618870735206963982124989119168184158426367979596515774206067129025483161906591966384912668181339164666665266738235700364668401756828125640756874926491383244643594272392553074475284498419221441662415283838467432002835767036137825615893511902925483904294249207498713049333593217615515009376505621391124620377124420970001336769161793069478032601090259475209543017993342592633423615988575536929264221062978896330751783626124610340204196837223450934719894178936630269332733760402146018325612354164562669647549313873022373670440459401663978522700594793226335570540431627683316365667697808499342139017156757485919173867758334019
2505
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!