freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

miracl用戶手冊(cè)(譯)-資料下載頁(yè)

2025-06-29 10:34本頁(yè)面
  

【正文】 reputation,[ HAC])。GF(p),GF(2^m)。/** Program to calculate factorials.*/include iostreaminclude /* include MIRACL system */using namespace std。Miracl precision(500,10)。 // This makes sure that MIRACL// is initialised before main()// is calledvoid main(){/* calculate factorial of number */Big nf = 1。 /* declare Big variable nf */int n。cout factorial program\n。cout input number n= \n。cin n。while (n 1)nf *= (n)。 /* nf = n! = n*(n1)*(n2)*....3*2*1 */cout n!= \n nf \n。}請(qǐng)注意對(duì)用于設(shè)置big變量精度的偽類Miracl的使用。它聲明在全局范圍內(nèi)以確保MIRACL會(huì)在main調(diào)用前初始化(注意這不適用于多線程環(huán)境)。編譯和鏈接此程序時(shí)。與內(nèi)部Big類型相互轉(zhuǎn)換很重要:將十六進(jìn)制字符串轉(zhuǎn)換為Big:Big x。char c[100]。...mipIOBASE = 16。x = c。將Big轉(zhuǎn)換為十六進(jìn)制字符串:mipIOBASE = 16。c x。若要與二進(jìn)制相互轉(zhuǎn)換,請(qǐng)使用from_binary()和to_binary()友員。int len。char c[100]。...Big x = from_binary(len, c)。// creates Big x from len bytes of binary in clen = to_binary(x, 100, c, FALSE)。// converts Big x to len bytes binary in c[100]len = to_binary(x, 100, c, TRUE)。// converts Big x to len bytes binary in c[100]// (right justified with leading zeros)在許多示例程序尤其是因式分解程序中,需要進(jìn)行所有的算術(shù)運(yùn)算。為避免乏味地在每個(gè)操作后都要進(jìn)行降階(reduction,mod n),使用了一個(gè)新的C++類ZZn。ZZn的算子將自動(dòng)進(jìn)行降價(jià)。modulo(n)函數(shù)用于設(shè)置模數(shù)。GF2m類使用類似的方式來(lái)處理定義于GF(2^m)上的各個(gè)域元素。此時(shí)用modulo(m,a,b,c)來(lái)設(shè)置模數(shù),它同時(shí)也指定了一個(gè)三項(xiàng)式(b = c =0)或五項(xiàng)式(tanomial)。詳細(xì)內(nèi)容參見(jiàn)IEEE P1363文檔:ZZn內(nèi)部使用Montgomery表示法(),但作為C++的一個(gè)典型特性,這對(duì)程序員是透明的。(p)橢圓曲線上的點(diǎn)成為一件簡(jiǎn)單的事情,同樣屏蔽了所有麻煩的細(xì)節(jié)。(2^m)相關(guān)的同樣事情。幾乎所有的MIRACL功能都可以通過(guò)C++來(lái)訪問(wèn)。大部分的示例程序的C++版本包含在分發(fā)包中。用C++維護(hù)大對(duì)象的一個(gè)問(wèn)題是編譯器產(chǎn)生代碼來(lái)創(chuàng)建/銷毀/拷貝臨時(shí)對(duì)象的傾向。默認(rèn)情況下MIRACL從堆中獲取內(nèi)存給Big和Flash,這可能相當(dāng)耗時(shí),并且最終這些對(duì)象還要清除。從棧中分配內(nèi)存可能要快一點(diǎn),尤其對(duì)于相對(duì)較小的big數(shù)。這可以在編譯時(shí)通過(guò)定義開(kāi)關(guān)BIGS=m來(lái)做到。例如在Microsoft C++編譯器上使用下列命令行:C:\miraclcl /O2 /GX /DBIGS=50 請(qǐng)注意m的值應(yīng)小于主程序中調(diào)用mirsys(n,0)或Miracl precision=n時(shí)n的值。在有限域上運(yùn)算時(shí),有效數(shù)字總是小于某個(gè)固定的模數(shù)。例如在有限域(mod n)中,ZZn可以處理關(guān)于模數(shù)n(512位,通過(guò)Modulo(n)指定)的值。在這種情況下可以定義ZZNS=16,從而所有的元素的大小都是16*32=512位并且從棧中創(chuàng)建(這在與Comba機(jī)制聯(lián)合使用時(shí)工作得尤其好)。類似地,當(dāng)工作在域GF(2^283)上時(shí),可以定義GF2MS=9,從而域上的所有元素都存儲(chǔ)在從棧中分配的固定的9個(gè)字中。在后兩種情況中,調(diào)用mirsys(n,0)或Miracl precision=n指定的精度值n應(yīng)至少比ZZNS=m或GF2MS=m中指定的m大2。開(kāi)發(fā)時(shí)或當(dāng)對(duì)象非常大時(shí),不推薦使用這些方法。它僅與C++程序有關(guān)。 有關(guān)使用此機(jī)制的注釋。但同時(shí)它的好處也是明顯的,程序運(yùn)行效率可能提升一倍。最后,這里有一個(gè)實(shí)現(xiàn)相對(duì)來(lái)說(shuō)較復(fù)雜的加密協(xié)議的C++程序,注意其中對(duì)的域元素變量(大寫字母)的轉(zhuǎn)換。/** Gunthers’s ID based key exchange Finite field version* See RFC 1824* r^r variant (with Perfect Forward Security)*/include iostreaminclude fstreaminclude using namespace std。Miracl precision = 100。char *IDa = Identity 1。char *IDb = Identity 2。// Hash functionBig H(char *ID){ // hash character string to 160bit big numberint b。Big h。char s[20]。sha sh。shs_init(amp。sh)。while (*ID != 0) shs_process(amp。sh, *ID++)。shs_hash(amp。sh, s)。h = from_binary(20, s)。return h。}int main(){int bits。ifstream mon()。 // construct file streamBig p,q,g,x,k,ra,rb,sa,sb,ta,tb,wa,wb。ZZn G,Y,Ra,Rb,Ua,Ub,Va,Vb,Key。ZZn A[4]。Big b[4]。long seed。miracl *mip = amp。precision。cout Enter 9 digit random number seed = 。cin seed。 irand(seed)。// get mon data. Its in hex. G^q mod p = 1mon bits。mipIOBASE = 16。mon p q g。mipIOBASE = 10。modulo(p)。 // set modulusG = (ZZn) g。cout Setting up Certification Authority ... endl。// CA generates its secret and public keysx = rand(q)。 // CA secret key, 0 x qY = pow(G, x)。 // CA public key, Y=G^xcout Visiting CA .... endl。// Visit to CA ak = rand(q)。Ra = pow(G, k)。ra = (Big) Ra % q。sa = (H(IDa) + (k * ra) % q)。sa = (sa * inverse(x, q)) % q。// Visit to CA bk = rand(q)。Rb = pow(G, k)。rb = (Big) Rb % q。sb = (H(IDb) + (k * rb) % q)。sb = (sb * inverse(x, q)) % q。cout Offline calculations .... endl。// offline calculation awa = rand(q)。Va = pow(G, wa)。ta = rand(q)。Ua = pow(Y, ta)。// offline calculation bwb = rand(q)。Vb = pow(G, wb)。tb = rand(q)。Ub = pow(Y, tb)。// Swap ID, R, U, Vcout Calculate Key ... endl。// calculate key a// Key = Vb^^^[(H(IDa)*tb)%q].Rb^[(rb*ta)%q] mod prb = (Big) Rb % q。A[0] = Vb。 A[1] = Ub。 A[2] = G。 A[3] = Rb。b[0] = wa。 b[1] = sa。 b[2] = (H(IDb) * ta) % q。b[3] = (rb * ta) % q。Key = pow(4, A, b)。 // extended exponentiationcout Key= \n Key endl。// calculate key bra = (Big) Ra % q。A[0] = Va。 A[1] = Ua。 A[2] = G。 A[3] = Ra。b[0] = wb。 b[1] = sb。 b[2] = (H(IDa) * tb) % q。b[3] = (ra * tb) % q。Key = pow(4, A, b)。 // extended exponentiationcout Key= \n Key endl。return 0。}MIRACL演化出了一個(gè)復(fù)雜的類繼承體系(見(jiàn)下圖),盡可能多的類型直接在C/匯編的內(nèi)核上直接建立。請(qǐng)注意對(duì)多項(xiàng)式,冪級(jí)數(shù)和擴(kuò)展域的支持。第九章 實(shí)例變量,它們都通過(guò)mip(Miracl Instance Pointer,Miracl實(shí)例指針)來(lái)訪問(wèn)。BOOL EXACT 初始為TRUE,flash運(yùn)算中發(fā)生圓整時(shí)置為FALSE。int INPLEN 輸入字符串的長(zhǎng)度,輸入二進(jìn)制數(shù)據(jù)時(shí)使用。int IOBASE 輸入、輸出時(shí)使用的“可打印”基數(shù),在程序中可任意更改,必須大于等于2,小于等于256。int IOBSIZ I/O緩沖區(qū)大小。BOOL ERCON 錯(cuò)誤發(fā)生時(shí),默認(rèn)產(chǎn)生一條錯(cuò)誤消息并中止程序,用戶可將此值置TRUE來(lái)處理錯(cuò)誤。int ERNUM 最后一次發(fā)生的錯(cuò)誤的值。char IOBUFF[] I/O緩沖區(qū)。int NTRY isprime進(jìn)行概率素?cái)?shù)測(cè)試(probabalistic primality test)時(shí)迭代的次數(shù),初始為6。int *PRIMES 指向小素?cái)?shù)表的指針。BOOL RPOINT 置TRUE時(shí)數(shù)字使用小數(shù)形式輸出,否則使用分?jǐn)?shù)形式輸出(默認(rèn))。BOOL TRACER 置為ON時(shí)輸出調(diào)試信息,默認(rèn)為OFF。第十一章 硬件/編譯器接口硬件/。移植到新的硬件環(huán)境中時(shí)必須編輯此文件。
點(diǎn)擊復(fù)制文檔內(nèi)容
外語(yǔ)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1