Báo cáo Mật Mã và An Toàn Dữ Liệu Vấn Đề Tính Toán Với Các Số Lớn Một số bài toán liên quan tới việc tính toán với các số lớn thường gặp là: Kiểm tra tính nguyên tố của một số lớn Khai căn bậc hai của số lớn Vấn đề tính lũy thừa với số mũ lớn, theo Modulo Vấn đề tính phần tử nghịch đảo các số lớn, theo Modulo. Vấn đề tính giai thừa số lớn Vấn đề các phép toán trên số lớn ( cộng, trừ, nhân, chia)
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Đề tài:
Vấn Đề Tính Toán Với Các Số Lớn
Môn học: Mật Mã và An Toàn Dữ Liệu
Giáo viên hướng dẫn: PGS.TS Trịnh Nhật Tiến
Trang 2Gi i Thi u ới Thiệu ệu
M t s bài toán liên quan t i vi c tính toán v i các s ột số bài toán liên quan tới việc tính toán với các số ố bài toán liên quan tới việc tính toán với các số ới Thiệu ệu ới Thiệu ố bài toán liên quan tới việc tính toán với các số
l n th ng g p là: ới Thiệu ường gặp là: ặp là:
- Ki m tra tính nguyên t c a m t s l n ểm tra tính nguyên tố của một số lớn ố bài toán liên quan tới việc tính toán với các số ủa một số lớn ột số bài toán liên quan tới việc tính toán với các số ố bài toán liên quan tới việc tính toán với các số ới Thiệu
- Khai căn b c hai c a s l n ậc hai của số lớn ủa một số lớn ố bài toán liên quan tới việc tính toán với các số ới Thiệu
- V n đ tính lũy th a v i s mũ l n, theo Modulo ấn đề tính lũy thừa với số mũ lớn, theo Modulo ề tính lũy thừa với số mũ lớn, theo Modulo ừa với số mũ lớn, theo Modulo ới Thiệu ố bài toán liên quan tới việc tính toán với các số ới Thiệu
- V n đ tính ph n t ngh ch đ o các s l n, theo ấn đề tính lũy thừa với số mũ lớn, theo Modulo ề tính lũy thừa với số mũ lớn, theo Modulo ần tử nghịch đảo các số lớn, theo ử nghịch đảo các số lớn, theo ịch đảo các số lớn, theo ảo các số lớn, theo ố bài toán liên quan tới việc tính toán với các số ới Thiệu Modulo.
- V n đ tính giai th a s l n ấn đề tính lũy thừa với số mũ lớn, theo Modulo ề tính lũy thừa với số mũ lớn, theo Modulo ừa với số mũ lớn, theo Modulo ố bài toán liên quan tới việc tính toán với các số ới Thiệu
- V n đ các phép toán trên s l n ( c ng, tr , nhân, ấn đề tính lũy thừa với số mũ lớn, theo Modulo ề tính lũy thừa với số mũ lớn, theo Modulo ố bài toán liên quan tới việc tính toán với các số ới Thiệu ột số bài toán liên quan tới việc tính toán với các số ừa với số mũ lớn, theo Modulo chia)
Trang 3N i Dung Trình Bày ột số bài toán liên quan tới việc tính toán với các số
Phát bi u bài toán ểm tra tính nguyên tố của một số lớn
1 2
T t ng th c hi n ư ưởng thực hiện ực hiện ệu
3
Trang 41 Phát bi u bài toán ểm tra tính nguyên tố của một số lớn
Cho hai s nguyên l n a và b có đ dài l n l t là m ố bài toán liên quan tới việc tính toán với các số ới Thiệu ột số bài toán liên quan tới việc tính toán với các số ần tử nghịch đảo các số lớn, theo ượt là m
và n (ch a m và n ch s ) Th c hi n hai nhi m ứa m và n chữ số) Thực hiện hai nhiệm ữ số) Thực hiện hai nhiệm ố bài toán liên quan tới việc tính toán với các số ực hiện ệu ệu
v :ụ:
- X lý d li u v i hai s nguyên l n a và bử nghịch đảo các số lớn, theo ữ số) Thực hiện hai nhiệm ệu ới Thiệu ố bài toán liên quan tới việc tính toán với các số ới Thiệu
- Th c hi n các phép toán: c ng , tr , nhân, chia.ực hiện ệu ột số bài toán liên quan tới việc tính toán với các số ừa với số mũ lớn, theo Modulo
Trang 52 T t ng th c hi n ư ưởng thực hiện ực hiện ệu
Vi c h tr ki u d li u s nguyên và các phép ệu ỗ trợ kiểu dữ liệu số nguyên và các phép ợt là m ểm tra tính nguyên tố của một số lớn ữ số) Thực hiện hai nhiệm ệu ố bài toán liên quan tới việc tính toán với các số
toán s h c đ i v i các s có s các ch s l n ố bài toán liên quan tới việc tính toán với các số ọc đối với các số có số các chữ số lớn ố bài toán liên quan tới việc tính toán với các số ới Thiệu ố bài toán liên quan tới việc tính toán với các số ố bài toán liên quan tới việc tính toán với các số ữ số) Thực hiện hai nhiệm ố bài toán liên quan tới việc tính toán với các số ới Thiệu
trong các ngôn ng l p trình c p cao nh pascal, ữ số) Thực hiện hai nhiệm ậc hai của số lớn ấn đề tính lũy thừa với số mũ lớn, theo Modulo ư C# v n còn b ẫn còn bị ịch đảo các số lớn, theo gi i h n ới Thiệu ạn ởng thực hiện 1 m c nào đó nên đ gi i ứa m và n chữ số) Thực hiện hai nhiệm ểm tra tính nguyên tố của một số lớn ảo các số lớn, theo quy t bài toán này ta c n xây d ng riêng cho mình ết bài toán này ta cần xây dựng riêng cho mình ần tử nghịch đảo các số lớn, theo ực hiện
m t c u trúc d li u có th l u tr đ c s l n ột số bài toán liên quan tới việc tính toán với các số ấn đề tính lũy thừa với số mũ lớn, theo Modulo ữ số) Thực hiện hai nhiệm ệu ểm tra tính nguyên tố của một số lớn ư ữ số) Thực hiện hai nhiệm ượt là m ố bài toán liên quan tới việc tính toán với các số ới Thiệu
và các phép toán s h c trên c u trúc d li u đó.ố bài toán liên quan tới việc tính toán với các số ọc đối với các số có số các chữ số lớn ấn đề tính lũy thừa với số mũ lớn, theo Modulo ữ số) Thực hiện hai nhiệm ệu
Trang 62.1.X Lý D Li u ử nghịch đảo các số lớn, theo ữ số) Thực hiện hai nhiệm ệu
- Đ a d li u v các ki u s ư ữ số) Thực hiện hai nhiệm ệu ề tính lũy thừa với số mũ lớn, theo Modulo ểm tra tính nguyên tố của một số lớn ố bài toán liên quan tới việc tính toán với các số
nguyên đã có mà máy h ỗ trợ kiểu dữ liệu số nguyên và các phép
tr s n đ t o ra ki u s ợt là m ẵn để tạo ra kiểu số ểm tra tính nguyên tố của một số lớn ạn ểm tra tính nguyên tố của một số lớn ố bài toán liên quan tới việc tính toán với các số
l n ới Thiệu
- Th c hi n bi u di n thành ực hiện ệu ểm tra tính nguyên tố của một số lớn ễn thành
các kh i, m i kh i g m 4 ố bài toán liên quan tới việc tính toán với các số ỗ trợ kiểu dữ liệu số nguyên và các phép ố bài toán liên quan tới việc tính toán với các số ồm 4
byte
- Th c hi n đ a các ch s ực hiện ệu ư ữ số) Thực hiện hai nhiệm ố bài toán liên quan tới việc tính toán với các số
vào trong các kh i ố bài toán liên quan tới việc tính toán với các số
- Xác đ nh b i công th c: ịch đảo các số lớn, theo ởng thực hiện ứa m và n chữ số) Thực hiện hai nhiệm
(multiplier * posVal);
- multiplier = multiplier
*radix;
Ví d : ụ:
A=…345
- result= 0+(1*a[0])=5 multiplier= 1*10=10
- result=5+(10*4)=45 multiplier= 10*10=100
Trang 72.2 Phép C ng ột số bài toán liên quan tới việc tính toán với các số
Xác đ nh công th c: ịnh công thức: ức: Ví d : ụ:
long sum = (long)bi1.data[i]
+ (long)bi2.data[i] + carry;
carry = sum >> 32;
result.data[i] = (uint)(sum &
0xFFFFFFFF);
+0= 0
Trang 82.3 Phép Trừa với số mũ lớn, theo Modulo
Công th c: ức: Ví dụ:
- long diff = (long)bi1.data[i]
- (long)bi2.data[i] -carry;
- result.data[i] = (uint)(diff &
0xFFFFFFFF);
- Nếu diff<0: carry=1
- Ngược lại: carry=0
- diff= a[0]-b[0]-0=1-1-0=0;
data[0]=0;
carry=0;
Trang 92.3 Phép Nhân
Công th c: ức: Ví d : ụ:
- Ulong Val=
bi1.data[i]*bi2.data[j]+
result.data[k]+mcarry;
- Result.data[k]= (unit)
(Val&0xFFFFFFFF)
- Mcarry=(val>>32)
i=0, j=0,k=0(k=i,k++)
Val=a[0]*b[0]+data[0]+0= 2*3+0+0=6;
Data[0]=6 mcarry=0;
i=0,j=j,k=1
Trang 102.4 Phép Chia
- B c 1ưới Thiệu : Khi i< đ dài m ng (a) -1ột số bài toán liên quan tới việc tính toán với các số ảo các số lớn, theo
+N u xâu t a[0] đ n a[i] v n còn nh h n b thì i++ết bài toán này ta cần xây dựng riêng cho mình ừa với số mũ lớn, theo Modulo ết bài toán này ta cần xây dựng riêng cho mình ẫn còn bị ỏ hơn b thì i++ ơng trình Demo (n u i v t quá đ dài m ng (a) -1 thì du=a[0]…a[i], ết bài toán này ta cần xây dựng riêng cho mình ượt là m ột số bài toán liên quan tới việc tính toán với các số ảo các số lớn, theo
d ng ch ng trình Xu ng b c 2.ừa với số mũ lớn, theo Modulo ương trình Demo ố bài toán liên quan tới việc tính toán với các số ưới Thiệu
Bi n tam đ l u tr th ng c a các ph n nh ( ết bài toán này ta cần xây dựng riêng cho mình ểm tra tính nguyên tố của một số lớn ư ữ số) Thực hiện hai nhiệm ương trình Demo ủa một số lớn ần tử nghịch đảo các số lớn, theo ỏ hơn b thì i++ ởng thực hiện đây chính là xâu : a[0]… a[i]) cho b Khi ph n nh ần tử nghịch đảo các số lớn, theo ỏ hơn b thì i++
v n còn l n h n b thi tr d n ph n nh đã xét v i ẫn còn bị ới Thiệu ơng trình Demo ừa với số mũ lớn, theo Modulo ần tử nghịch đảo các số lớn, theo ởng thực hiện ần tử nghịch đảo các số lớn, theo ỏ hơn b thì i++ ới Thiệu
b, l u s l n tr đ c vào bi n tam Đó là k t qu ư ố bài toán liên quan tới việc tính toán với các số ần tử nghịch đảo các số lớn, theo ừa với số mũ lớn, theo Modulo ượt là m ết bài toán này ta cần xây dựng riêng cho mình ết bài toán này ta cần xây dựng riêng cho mình ảo các số lớn, theo
m i ch s trong th ng m i l n chia M ng du = ỗ trợ kiểu dữ liệu số nguyên và các phép ữ số) Thực hiện hai nhiệm ố bài toán liên quan tới việc tính toán với các số ương trình Demo ởng thực hiện ỗ trợ kiểu dữ liệu số nguyên và các phép ần tử nghịch đảo các số lớn, theo ảo các số lớn, theo
Trang 112.4 Phép Chia
+ Thêm vào c giá tr c a tam ịch đảo các số lớn, theo ủa một số lớn
+ Lo i b h t ch s t a[0] đ n a[i] Sau đó ghép ạn ỏ hơn b thì i++ ết bài toán này ta cần xây dựng riêng cho mình ữ số) Thực hiện hai nhiệm ố bài toán liên quan tới việc tính toán với các số ừa với số mũ lớn, theo Modulo ết bài toán này ta cần xây dựng riêng cho mình
m ng du vào tr c m ng a.ảo các số lớn, theo ưới Thiệu ảo các số lớn, theo
+ Đ t l i i=0 du=“”, tam=ặp là: ạn 0
- B c ưới Thiệu 2: Ki m tra và xóa các ch s 0 vô nghĩa ểm tra tính nguyên tố của một số lớn ữ số) Thực hiện hai nhiệm ố bài toán liên quan tới việc tính toán với các số ởng thực hiện
s d và cho ra m ng k t qu cố bài toán liên quan tới việc tính toán với các số ư ảo các số lớn, theo ết bài toán này ta cần xây dựng riêng cho mình ảo các số lớn, theo
Trang 123 Chương Trình Demo