Ⅰ 如何進行冪模運算
模冪乘運算採用平方乘演算法,將模冪乘運算轉化為模乘和模平方運算實現.
平方-乘演算法:一般地,求S=ABmodN,其中A<N,B<N;將指數B表示為二進制,即
觀察演算法,由於指數B化為二進制後的長度不確定,多數情況下高位會存在很多個0.如果完全按照該演算法實現,指數B從最高位起開始運算,在第一個1出現以前,雖進行了多次運算,但D的值一直為1;當B出現第一個1後才進入有效的模乘運算.在具體實現時,設計專門的電路從高到低掃描指數B的每一位,當在找到第一個1之前,不做任何運算,找到第一個1時,使D=A,以後根據每次掃描的6[i]值,調用模乘實現運算.
經過對多種公鑰加解密演算法的分析——如RSA演算法,通常公鑰的有效位較短,而私鑰有效位較長.加密中的模冪乘運算,指數有效位很少,所以上面的改進可大大減少模乘次數,加快加密過程.以目前常用的私鑰和模數1 024 bit,公鑰128bit情況為例,採用上述改進可減少896次不必要的模乘.解密過程使用中國余數定理(CRT),可有效降低解密指數的長度,整個演算法的執行效率得到進一步提高.
2.2 模乘及模加的實現方法
模乘採用改進的Blakley加法型演算法,原理與平方-乘演算法類似,核心是將模乘轉化為模加實現.如通常S=(A×B)modN,A<N,B<N可以按如下方式考慮.
將B表示成二進制:
由上式可知,可以像平方一乘演算法一樣,將模乘轉化為模加實現.
一般模加運算表示為S=(A+B)modN,觀察以上模乘及模冪乘演算法原理描述,可知在其調用的模加運算中,因為A<N且B<N,則(A+B)<2N,所以,
因此考慮在運算中同時計算(A+B)和(A+B-N)兩個結果,運算完成後通過判斷加法器與減法器的進位輸出(CO)與借位輸出(BO).決定哪個為本次模加的正確結果.同上,A,B,N均為l位的二進制數,若CO=1,則說明(A+B)為l+1位二進制數,必大於l位的N;若CO=0,則(A+B)和N同為l位,當BO=1時(A+B)<N,當BO=0時N≤(A+B).
從而可以在一次運算中完成加法和求模過程,使模加的運算速度提高1倍.
Ⅱ 協同優化演算法(CO演算法)的具體細節是什麼
協同優化演算法的原理是將一復雜的目標函數分解成簡單的子目標函數,然後再將這些子目標函數進行協同優化。具體說來,協同優化是在優化每一子目標函數同時綜合考慮其它子目標函數的結果,使子目標函數之間的優化結果能夠一致。優化結果一致是指使每一變數的值在每一子目標函數的優化結果中能夠一致。一般來說,可以證明,如果變數的值一致則為最優解。協同優化演算法沒有局部最優問題同時具有非常良好的收斂特性。 它很好地解決了許多實際中非線性優化及組合優化難題。