Re: 我在練習寫rsa加密遇到一些問題help

看板Programming作者時間18年前 (2007/07/18 08:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《notr (notr)》之銘言: > ※ 引述《b8121 ( )》之銘言: > > #include <stdio.h> > > #include <math.h> > > main() > > { > > int m,p=7,q=17,e=5,n=119; > > long nm,d=77,c; > > printf("請輸入明文數: "); > > scanf("%d", &m); > > getchar(); > > printf("\np=41,q=29,e=61,d=71,n=1189\n") ; > > c=((int)(pow(m, e))%n) ; > > printf("密文= %d\n", c); > > getchar(); > > nm=((long)(pow(c,d))% n); > > printf("m= %d\n", nm); > > getchar(); > > } > > nm=((long)(pow(c,d))% n); <-----應該是這裏發生了溢位問題 > > 可是強制轉型成為double型態的話取mod又會出錯!請問一下有 > > 其他方法能解決嗎 > 用迴圈去乘, 每乘一次就立刻 %n > 不要用 pow 去做 > 像這樣計算 x^y % n: > int ipow(int x,int y,int n) { > int z; > for (z=1; y>0; y/=2) { > if (y%2 != 0) { > z=(z*x)%n; > } > x=(x*x)%n; > } > return z; > } 謝謝你哦!我先試一下 -- ┌─────KKCITY─────┐  線上音樂新震撼   bbs.kkcity.com.tw ^_^ / 隨選隨播免等待 KKBOX ^_^ / └──From:59.126.117.59 ──┘   http://www.kkbox.com.tw   --
文章代碼(AID): #16dL-200 (Programming)
文章代碼(AID): #16dL-200 (Programming)