Thuật toán phân rã nhị phân tính luỹ thừa mod

Một phần của tài liệu Nghiên cứu và phát triển hệ mật mã khóa công khai ứng dụng trong bảo mật dữ liệu và xác thực các giao dịch điện tử (Trang 52)

Hiện đã có một số phƣơng pháp tính biểu thức lũy thừa mod:

q = am mod n

trong đó phƣơng pháp bình phƣơng liên tiếp hay đƣợc sử dụng. Để hiểu rõ hơn về phƣơng pháp này ta xét trƣờng hợp m =13. Đầu tiên khai triển số mũ 13 theo hệ cơ số 2, tức là:

13 = 8 + 4 + 1 = 23 + 22 +20 (*)

Rồi tính tiếp các đồng dƣ bình phƣơng, nhƣ sau: a1 = a2 mod n

a2 = a12 mod n a3 = a22 mod n

Sau đó tổng hợp lại, căn cứ theo khai triển (*), lấy tích của các lũy thừa bậc 23, 22, 20 sẽ thu đƣợc kết quả:

q = a3 * a2 *a0 (mod n)

Qua ví dụ trên có thể đánh giá độ phức tạp của thuật toán này nhƣ sau: Số phép nhân và số phép mod không vƣợt quá 2log2m.

Trong báo cáo này sử dụng phƣơng pháp phân rã nhị phân. Với trƣờng hợp m = 13 thì phƣơng pháp đƣợc thực hiện nhƣ sau:

Đầu tiên sử dụng quá trình lặp để phân rã nhị phân số mũ m: 13 = 2*6 +1 (dƣ thừa 1)

6 = 2*3 + 0 (không dƣ thừa) 3 =2*1 + 1 (dƣ thừa 1)

Sau đó dùng quá trình lặp để tính giá trị biểu thức: a0 = a

a2 = a12 (mod n) a3 = a22 * a (mod n) q = a3

Qua ví dụ có thể thấy: số phép nhân không quá 2log2m , số phép mod bằng log2m. Nhƣ vậy độ phức tạp của hai phƣơng là tƣơng đƣơng và đều có thời gian đa thức.

Phƣơng pháp này có thể cài đặt theo đệ quy hoặc tổ chức hai vòng lặp để phân rã số mũ và tính biểu thức. Khi cài đặt nên sử dụng phƣơng pháp lặp để giảm bộ nhớ và tăng tốc độ tính toán. Dạng đệ quy của thuật toán có thể đƣợc trình bày nhƣ sau:

Input: s, a, m, n Ouput: q = s.am mod n Thuật toán:

1.Nếu: m=1 thì q=s.a mod n

2.Nếu: m > 1, thực hiện các bước 2.1. Nếu m chẵn:

m1 = m/2

q = (s.am1 mod n)(am1 mod n) mod n 2.2. Nếu m lẻ:

m1 = (m-1)/2

q = (s.am1 mod n)(a.am1 mod n) mod n

Một phần của tài liệu Nghiên cứu và phát triển hệ mật mã khóa công khai ứng dụng trong bảo mật dữ liệu và xác thực các giao dịch điện tử (Trang 52)

Tải bản đầy đủ (PDF)

(91 trang)