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)

Đăng bởi: Admin | Lượt xem: 1632 | Chuyên mục: 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
vncoder logo

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!



Khóa học liên quan

Khóa học: Java

Tổng hợp Bài tập Java có lời giải
Số bài học:
Lượt xem: 17945
Đăng bởi: Admin
Chuyên mục: Java

Lập trình Java cơ bản
Số bài học:
Lượt xem: 40632
Đăng bởi: Admin
Chuyên mục: Java