日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用c语言实现蚂蚁算法,rsa算法的c语言实现

發(fā)布時(shí)間:2023/12/19 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用c语言实现蚂蚁算法,rsa算法的c语言实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

rsa算法的c語言實(shí)現(xiàn)

RSA 算法的 C 語言實(shí)現(xiàn)一、RSA 算法的描述 1、選取長度相等的兩個(gè)大素?cái)?shù) p 和 q,計(jì)算其乘積: n=pq 然后隨機(jī)選取加密密鑰 e,使 e 和 (p–1)(q–1)互素。 最后用歐幾里德擴(kuò)展算法計(jì)算解密密鑰 d,以滿足 ed=1(mod(p–1)(q–1)) 即 d= e–1mod((p–1)(q–1)) e 和 n 是公鑰,d 是私鑰 2、加密公式如下: ci=mi^e( modn)3、解密時(shí),取每一密文分組 ci 并計(jì)算: mi=ci^d(modn)Ci^d=(mi^e)^d= mi^(ed)=mi^[k(p–1) (q–1 )+1] =mimi^[k(p–1) (q –1)]=mi*1=mi4、消息也可以用 d 加密用 e 解密 二、C 源程序//RSA 算法的 C 程序?qū)崿F(xiàn) #includeintcandp(inta,intb,intc) //數(shù)據(jù)處理函數(shù),實(shí)現(xiàn)冪的取余運(yùn)算 {intr=1; b=b+1; while(b!=1) { r=r*a; r=r%c; b--; } printf(“%d\n“,r); returnr; }intfun(intx,inty) //公鑰 e 與 t 的互素判斷{Int t;while(y) { t=x;x=y;y=t%y;}if(x== 1) return0; //x 與 y 互素時(shí)返回 0 else return1; //x 與 y 不互素時(shí)返回 1 }voidmain() {int p,q,e,d,m,n,t,c,r;printf(“請輸入兩個(gè)素?cái)?shù) p,q:“);scanf(“%d%d“,n=p*q; printf(“計(jì)算得 n 為 %3d\n“,n); t=(p-1)*(q-1); //求 n 的歐拉數(shù) printf(“計(jì)算得 t 為 %3d\n“,t); printf(“請輸入公鑰 e:“); scanf(“%d“,if(et||fun(e,t)) { printf(“e 不合要求,請重新輸入 :“); //et 或 e 與 t 不互素時(shí),重新輸入 scanf(“%d“,} d=1;while(((e*d)%t)!=1) d++; //由公鑰 e 求出私鑰 d printf(“經(jīng)計(jì)算 d 為 %d\n“,d); printf(“加密請輸入 1\n“); //加密或解密選擇 printf(“解密請輸入 2\n“); scanf(“%d“,switch(r) { case1:printf(“請輸入明文 m:“); //輸入要加密的明文數(shù)字 scanf(“%d“,c=candp(m,e,n); printf(“密文為 %d\n“,c);break; case2:printf(“請輸入密文 c:“); //輸入要解密的密文數(shù)字 scanf(“%d“, m=candp(c,d,n); printf(“明文為 %d\n“,m);break; }}三、程序運(yùn)行結(jié)果及相關(guān)說明 主函數(shù)實(shí)現(xiàn)求 N 的歐拉數(shù)、由公鑰求解私鑰、加密解密選擇以及相應(yīng)的密文明文輸出。 子函數(shù) candp 實(shí)現(xiàn)加密解密時(shí)的求冪取余運(yùn)算,fun 實(shí)現(xiàn) e 與 t 的互素判斷,已驗(yàn)證 e 是否 符合要求。程序主體參考了網(wǎng)上的相關(guān) RSA 算法程序,我對其中 e 的合法性判斷、主函數(shù) 實(shí)現(xiàn)的順序以及相關(guān)提示信息做了補(bǔ)充與修改并加上了注釋,這樣程序可讀性更強(qiáng),運(yùn)行時(shí) 更容易操作,思路也更加嚴(yán)密。 當(dāng) P=43,q=59 時(shí),對 134 進(jìn)行加密,運(yùn)行結(jié)果如下:第一次取 e 為 15,與 t 不互素,提示需重新輸入,輸入 13 后,便可以進(jìn)行正確操作。 由于 int 型變量為十六位,因此 n 最大只能小于 65536,此程序只是對 RSA 算法的入門,無 法實(shí)現(xiàn)達(dá)到安全要求的數(shù)據(jù)位數(shù)。

總結(jié)

以上是生活随笔為你收集整理的用c语言实现蚂蚁算法,rsa算法的c语言实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。