Tải bản đầy đủ (.ppt) (13 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (381.84 KB, 13 trang )

ĐẠ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
Ng  i th c hi n: Tr n Th Mùi
1
Gi i Thi uớ ệ

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)
2
N i Dung Trình Bàyộ
3
Phát bi u bài toán ể
1
2
4
6
Ch ng trình Demo ươ
T t ng th c hi n ư ưở ự ệ
3


1. Phát bi u bài toánể
Cho hai s nguyên l n a và b có đ dài l n l t là m và ố ớ ộ ầ ượ
n (ch a m và n ch s ). Th c hi n hai nhi m v :ứ ữ ố ự ệ ệ ụ
- X lý d li u v i hai s nguyên l n a và bử ữ ệ ớ ố ớ
- Th c hi n các phép toán: c ng , tr , nhân, chia.ự ệ ộ ừ
4
2. T t ng th c hi nư ưở ự ệ

Vi c h tr ki u d li u s nguyên và các phép toán ệ ỗ ợ ể ữ ệ ố
s h c đ i v i các s có s các ch s l n trong các ố ọ ố ớ ố ố ữ ố ớ
ngôn ng l p trình c p cao nh pascal, C# v n còn b ữ ậ ấ ư ẫ ị
gi i h n ớ ạ 1 m c nào đó nên đ gi i quy t bài toán này ở ứ ể ả ế
ta c n xây d ng riêng cho mình m t c u trúc d li u có ầ ự ộ ấ ữ ệ
th l u tr đ c s l n và các phép toán s h c trên ể ư ữ ượ ố ớ ố ọ
c u trúc d li u đó.ấ ữ ệ
5
2.1.X Lý D Li u ử ữ ệ
- Đ a d li u v các ki u ư ữ ệ ề ể
s nguyên đã có mà máy ố
h tr s n đ t o ra ỗ ợ ẵ ể ạ
ki u s l n.ể ố ớ
- Th c hi n bi u di n ự ệ ể ễ
thành các kh i, m i kh i ố ỗ ố
g m 4 byteồ
- Th c hi n đ a các ch ự ệ ư ữ
s vào trong các kh iố ố
- Xác đ nh b i công th c: ị ở ứ
- result = result + (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
6
2.2. Phép C ngộ
Xác đ nh công th c:ị ứ
Ví d :ụ

long sum =
(long)bi1.data[i] +
(long)bi2.data[i] + carry;

carry = sum >> 32;

result.data[i] = (uint)(sum
& 0xFFFFFFFF);

a= 19 10011

b= 151111

Sum=a[0]+b[0]+0=1+1+0=
0

carry=1


Data[0]=(0&0xFFFFFFFF)
=0
7
2.3. Phép Trừ
Công th 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ượ ạ

a= 19 10011

b= 151111
- diff= a[0]-b[0]-0=1-1-
0=0;
data[0]=0;
carry=0;
8
2.3. Phép Nhân
Công th c:ứ
Ví d :ụ
- Ulong Val=
bi1.data[i]*bi2.data[j]+
result.data[k]+mcarry;
- Result.data[k]= (unit)
(Val&0xFFFFFFFF)

- Mcarry=(val>>32)

a= 123; b= 12

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
Val=a[0]*b[1]+data[1]+0=1*
3+0+0=3;
Data[1]=3;
9
2.4. Phép Chia
- B c 1ướ : Khi i< đ dài m ng (a) -1ộ ả

+N u xâu t a[0] đ n a[i] v n còn nh h n b thì i++(n u ế ừ ế ẫ ỏ ơ ế
i v t quá đ dài m ng (a) -1 thì du=a[0]…a[i], d ng ượ ộ ả ừ
ch ng trình. Xu ng b c 2.ươ ố ướ

Bi n tam đ l u tr th ng c a các ph n nh ( đây ế ể ư ữ ươ ủ ầ ỏ ở
chính là xâu : a[0]… a[i]) cho b. Khi ph n nh v n còn ầ ỏ ẫ
l n h n b thi tr d n ph n nh đã xét v i b, l u s ớ ơ ừ ầ ở ầ ỏ ớ ư ố
l n tr đ c vào bi n tam. Đó là k t qu m i ch s ầ ừ ượ ế ế ả ỗ ữ ố
trong th ng m i l n chia. M ng du = ph n nh .ươ ở ỗ ầ ả ầ ỏ
10
2.4. Phép Chia
+ Thêm vào c giá tr c a tam. ị ủ
+ Lo i b h t ch s t a[0] đ n a[i] . Sau đó ghép ạ ỏ ế ữ ố ừ ế

m ng du vào tr c m ng a.ả ướ ả
+ Đ t l i i=0. du=“”, tam=ặ ạ 0.
- B c ướ 2: Ki m tra và xóa các ch s 0 vô nghĩa s ể ữ ố ở ố
d và cho ra m ng k t qu cư ả ế ả
11
3. Chương Trình Demo
12
13

×