Cryptography

BigInteger

Bài tập 1: Random BigInteger

Viết hàm tạo ngẫu nhiên 1 số nguyên BigInteger lẻ nguyên dương GenerateBigInteger(): BigInteger

Bài tập 2: GreatestCommonDivisor

Viết hàm tìm ước chung lớn nhất của 2 số nguyên đầu vào, GCD(BigInteger a, BigInteger b): BigInteger

InputOutput
an
24273

Bài tập 3: GenerateInvertible(BigInteger n)

Tạo số BigInteger e ngẫu nhiên sao cho GCD(e, n) = 1

Bài tập 4: IsPrime

Viết hàm kiểm tra 1 số nguyên BigInteger đầu vào có phải là số nguyên tố không, IsPrime(BigInteger a): bool

InputOutput
29true
121false

Bài tập 5: Random Prime BigInteger

Viết chương trình tạo ngẫu nhiên 1 số nguyên tố BigInteger

Bài tập 6: PowerMod

Viết hàm PowerMod(BigInteger a, BigInteger n, BigInteger m): BigInteger theo công thức sau:

$$a ^ n \text{mod k}$$

InputOutput
anm
35277

Bài tập 7: ModeInverse

Viết hàm ModeInverse(BigInteger e, BigInteger m) Tìm số nghịch đảo d của e thỏa điều kiện e * d ≡ 1 mod m

Bài tập 8: ToArrayBigInteger

Viết hàm BigInteger[] ToArrayBigInteger(string msg), biến đổi chuỗi ký tự dài bất kỳ thành mảng các số BigInteger có chiều dài 1024 bits

Bài tập 9: ArrayBigIntegerToString

Viết hàm string ArrayBigIntegerToString(BigInteger[]), biến đổi mảng số nguyên BigInteger thành chuỗi ký tự