3. Việc lấy này không phải xuất phát từ lý do giảm bớt đ−ợc thủ tục xác định tính chính ph−ơng của biệt thức B2 4A mà ở chỗ đảm bảo cho các số
3.3.1 Phép nhân số lớn
Chúng ta đều biết cơ sở để xây dựng phép toán nhân trên các số lớn là công thức nhân sau.
Công thức 3.9.
Cho X=x0+x1q+...+xmqm và Y=y0+y1q+...+ynqn ta có XY=∑ x y qi j k(3-11).
i j kk k m n + = = + ∑ 0
Theo công thức nhân (3-11) trên thì để thực hiện một phép nhân hai số lớn có độ dài q phân là n, chúng ta cần tối thiểu n2 phép toán nhân hai số trong phạm vi q. Trong [Rieshel] tác giả có trình bày trong phần phụ lục một thuật toán nhân có thời gian tính chỉ là O(n1.5), cụ thể nh− sau.
Đầu tiên chúng ta xét tr−ờng hợp tích của hai số có độ dài 2 trong hệ Q phân nào đó. Giả sử X=x0+x1Q và Y=y0+y1Q, dễ dàng kiểm tra đ−ợc đẳng thức sau.
Công thức 3.10.
XY=x0y0+[x0y0+(x0-x1)(y1-y0)+x1y1]Q+x1y1Q2
=x0y0(1+Q)+(x0-x1)(y1-y0)Q+x1y1 (Q+Q2) (3-12).
Nh− vậy để thực hiện tính toán theo công thức (3-12) chúng ta chỉ cần tính 3 phép nhân các số trong phạm vi Q. Bây giờ, nếu chúng ta xét Q=q2 thì bằng cách truy hồi theo công thức (3-12) k b−ớc thì tổng số phép nhân hai số trong phạm vi q phục vụ thuật toán này chỉ là n=3
k
k. Rõ ràng 2k-1<n≤2k với n là độ dài q phân của các thừa số nhân cho nên nếu theo công thức (3-11) ta phải cần đến n2>22(k-1)=4k-1 phép nhân. Tóm lại thời gian tính toán của phép nhân
ch−ơng iii. ch−ơng trìnhsinh số nguyên tố mạnh cho hệ mật elgamal..
hai số lớn độ dài khai triển q phân là n theo cách trên sẽ chỉ là O(nLog3)≈O(n1.5).
Trong một số ch−ơng trình nguồn tính toán trên các số lớn nh− [N. V. Khán], [V. V. Xứng], [Kapp],... mà chúng tôi có trong tay thì ch−a có ch−ơng trình này thực hiện phép nhân theo công thức (3-11). Để thực hiện thuật toán theo công thức (3-12) vừa trình bày cần đến kỹ thuật lập trình cao vì bản chất của thuật toán là đệ quy nên rất khó thực hiện. Chúng tôi tránh việc phải thực hiện đệ quy bằng chia thuật toán nhân ra các thuật toán nhân con với số thuật toán con bằng số k nêu ở trên, cụ thể với q=216 độ dài tối đa cần tính toán n=25 (theo đăng ký là 1500 bit) . Rất tiếc do trình độ lập trình của mình còn thấp nên trong gài đặt thực nghiệm chúng tôi ch−a thấy −u điểm rõ rệt của thuật toán này. Chú ý rằng phần mềm trình bày trong [V. V. Xứng], các tác giả đã thành lập riêng thuật toán bình ph−ơng hai số lớn, thuật toán bình ph−ơng này có thời gian tính nhanh gấp đôi so với thuật toán nhân hai số cùng độ dài theo công thức (3-11) cho nên việc phát hiện tính nhanh hơn của thuật toán mới càng khó.