Tƣởng của thuật toán mã hóa

Một phần của tài liệu Nghiên cứu mở rộng phương pháp mã hóa số học ứng dụng trong bảo mật dữ liệu (Trang 33)

Xem bản rõ là một chuỗi gồm n ký tự. Gọi kt[i] là ký tự thứ i của bản rõ tính từ trái qua phải, i = 1,2,...,n (trong ví dụ trên: kt[1] = „C‟, kt[3] = „B‟). Gọi Sk (k = 1,2,...,n) là chuỗi con gồm k ký tự đầu tiên, tức Sk gồm các ký tự kt[1], kt[2], ..., kt[k]. Với bản rõ nhƣ trên thì các chuỗi con là:

S1 = "C" ; S2 = "CA" ;S3 = "CAB" ; S4 = "CABA" ;S5 = "CABAB"

Mỗi chuỗi con sẽ có miền mã là một đoạn thẳng (kín đầu trái, hở đầu phải) nằm trong đoạn [0, D]. Gọi :

Ti = [low_code[i], hi_code[i]) là miền mã của chuỗi con Si Các đoạn Ti đƣợc xác định nhƣ sau :

Với i=1, chuỗi S1 gồm một ký tự, thì T1 chính là miền phân bố của ký tự này: T1 = P(kt[1])

low_code[1] = low_range[kt[1]] (3.1)

hi_code[1] = hi_range[kt[1]] (3.2)

Với i=2,...,n thì Ti đƣợc xác định theo công thức lặp:

Ti = Ti-1 P(kt[i]) (3.3)

(Ti là hình chiếu của P(kt[i]) lên Ti-1)

3.2.1.3. Thuật toán mã hóa

Input:

- n: độ dài theo ký tự của bản rõ - dãy ký tự của bản rõ kt[i] (i=1,2...,n) - m: số ký tự của bảng phân bố

- low_range(ch[i]), hi_range(ch[i]) ứng với mỗi ký tự ch[i] trong bảng phân bố (i=1,...m)

Output:

- code: mã của bản rõ

Thuật toán:

low_code[1] = low_range[kt[1]] //tƣơng đƣơng (3.1)

for(i = 2; i ≤ n; i++) { low_code[i] = low_code[i-1]+ (low_range[kt[i]]×(hi_code[i-1]-low_code[i-1]))/D (3.4) hi_code[i] = low_code[i-1]+ (hi_range[kt[i]]×(hi_code[i-1]-low_code[i-1]))/D (3.5) } (Các công thức (3.4) và (3.5) đƣợc xác định từ (2.1), (2.5) và (3.3))

Mã số của bản rõ: Có thể chọn một giá trị bất kỳ của miền mã Tn làm mã số cho bản rõ. Gọi code là mã số của bản rõ thì code thỏa mãn điều kiện:

code  Tn = [ low_code[n], hi_code[n]) (3.6)

Nhận xét: Thực chất thuật toán mã hoá là xác định đoạn mã cho các chuỗi con Sk của bản rõ bằng cách áp dụng liên tiếp phép thu nhỏ đồng dạng. Các đoạn này bị thu nhỏ rất nhanh và khi một đoạn có độ dài bằng 1 thì thuật toán không thể tiếp tục được. Vì vậy để cài đặt trên máy tính cần sử dụng các kiểu số nguyên lớn từ vài chục đến vài trăm byte, ngoài ra phải chia bản rõ thành các khối và thực hiện mã hoá theo từng khối.

Một phần của tài liệu Nghiên cứu mở rộng phương pháp mã hóa số học ứng dụng trong bảo mật dữ liệu (Trang 33)