Tài liệu hướng dẫn thực hành
Written by Thong D. Nguyen Thursday, 16 September 2010 10:37
Courses - Cryptography
Tài liệu hướng dẫn thực hành môn "Nhập môn lý thuyết mã hoá thông tin".
Ngôn ngữ: Python
Nội dung: gồm 6 chương:
- Tổng quan về Python (yêu cầu tự đọc)
- Mật mã cổ điển
- Mã đối xứng hiện đại và mã công khai
- Hàm băm mật mã
- Hệ mã logarit rời rạc
- Chữ ký điện tử
Đánh giá: kiểm tra dựa trên tất cả các bài tập thực hành (không kể bài tập 30, 31, 32, 33).
| < Prev | Next > |
|---|
Idioms
- Every day is not saturday. (Sông có khúc, người có lúc)
- Don't count your chickens, before they are hatched. (Chưa đỗ ông Nghè đã đe Hàng tổng)
Who's online
We have 8 guests online
Location
38.107.179.217
38.107.179.217Search Bot
unknown unkno

OS
PHP
MySQL
Time
Caching
GZIP
Members
Content
Web Links



Today
Yesterday
This week
Last week
This month
Last month
All days
Comments
def cesar(p,k):
abc='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
c='';
for j in range(len(p)):
c += abc[(abc.index(p[j])+k)%len(abc)];
return c;
Mã Cesar
def cesar2(p,k):
k_cur = k;
c = p;
while k_cur > 0:
c = cesar(c, k_cur % 10);
k_cur /= 10;
return c;
Mã Cesar 2
def cesar2_d(c,k):
k_cur = int(str(k)[::-1]);
p = c;
while k_cur > 0:
p = cesar_d(p, k_cur % 10);
k_cur /= 10;
return p;
Mã Cesar 2 Decode
def cesar_d(c,k):
abc='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
p='';
for i in range(len(c)):
p += abc[(abc.index(c)-k)%len(abc)];
return p;
Cesar Decode
k='DLRYVOHEZXWPTBGFJQNMUSKACI';
def subs(p,k):
abc='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
if len(abc) != len(k):
return '';
c='';
for j in range(len(p)):
c += k[abc.index(p[j])];
return c;
Mã thay thế
def subs_d(c,k):
abc='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
if len(abc) != len(k):
return '';
p='';
for j in range(len(c)):
p += abc[k.index(c[j])];
return p;
Mã thay thế (Decode)
def affine(p,k):
abc='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
a=k[0];
b=k[1];
c='';
for i in range(len(p)):
x = abc.index(p);
c += abc[(a*x+b)%len(abc)];
return c;
Mã Affine
def affine6(p,k):
return affine(cesar(cesar(p, k[1]), k[0]), k);
Mã Affine 6
def affine7(p,k):
abc='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
c = '';
for j in range(len(p)):
ki = [k[0], abc.index(cesar(p[j], k[1]))];
c += affine(p[j], k);
return c;
Mã Affine 7
def egcd(a, b):
"""Returns a triple (g, x, y), such that ax + by = g = gcd(a,b). Assumes a, b >= 0."""
if a == 0:
return (b, 0, 1)
else:
g, y, x = egcd(b % a, a)
return (g, x - (b // a) * y, y)
def modinv(a, m):
g, x, y = egcd(a, m)
if g != 1:
return None
else:
return x % m
Modular inverse
Source: www.algorithmist.com/index.php/Modular_inverse
RSS feed for comments to this post