Re: 我在練習寫rsa加密遇到一些問題help
※ 引述《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 ◤
--
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章