Các mã lệnh và thuật toán
1.Hàm sinh 1 số nguyên lớn ngẫu nhiên
1
SecureRandom r = new SecureRandom();
2. Các phép toán trong BigInteger
Phép cộng:
1
2
3
4
BigInteger a = new BigInteger();
BigInteger b = new BigInteger();
BigInteger add = new BigInteger();
add=a.add(b);
Phép trừ:
1
2
3
4
BigInteger a = new BigInteger();
BigInteger b = new BigInteger();
BigInteger sub = new BigInteger();
sub=a.subtract(b);
Phép nhân:
1
2
3
4
BigInteger a = new BigInteger();
BigInteger b = new BigInteger();
BigInteger mul= new BigInteger();
mul=a.multiply(b);
Phép chia:
1
2
3
BigInteger a = new BigInteger();
BigInteger b = new BigInteger();
BigInteger div= new BigInteger(); div=a.division(b);
3. Hàm khởi tạo số nguyên lớn từ một chuỗi
1
BigInteger(string s, int radix);
Với s là chuỗi số nguyên lớn và radix là hệ cơ số (chẳng hạn 10 => hệ thập phân).
Ví dụ:
1
BigInteger k = new BigInteger(“123456”, 10); //k=123456
4. Hàm sinh ngẫu nhiên một số nguyên tố lớn
1
static BigInteger genPseudoPrime(int bits, int confidence, Random rand);
Sinh ngẫu nhiên một số nguyên tố lớn có số bit là bits, độ tin cậy của thuật toán xác suất kiểm tra số nguyên tố Rabin Miller là confidence và độ ngẫu nhiên là rand.
// Ví dụ: sinh ngẫu nhiên số nguyên tố dài 512 bit, độ tin cậy là 50.
1
BigInteger p = BigInteger.genPseudoPrime(512, 50, new Random());
5. Hàm tính ước số chung lớn nhất
1
2
3
public BigInteger GCD(BigInteger bi)
// Tính ước số chung lớn nhất của hai số nguyên k và phi
k.GCD(phi);
6. Hàm tính phần tử ngược
1
2
3
public BigInteger modInverse(BigInteger modulus)
// Tìm d là phần tử ngược của e trên vành số nguyên phi
d = e.modInverse(phi);
5. Hàm tính am mod n
1
public BigInteger modPow(BigInteger exp, BigInteger n)
// Tìm m = m^e mod n
Ví dụ: m = m.modPow(e, n);
Tóm Tắt
Share this:
Thích bài này:
Thích
Đang tải…