べき剰余を求める
RSA暗号プログラムでべき剰余を計算する必要がありましたが、べき剰余を計算するプログラムをまだ紹介していなかったのでここで。
#include <stdio.h> #define N 28 int imod(int a, int n) { int r; r = (a + n) % n; if(r < 0) r += n; return r; } int pow_mod(int a, int e, int n) { int r = 1; a = imod(a, n); while(e > 0){ if ((e & 1) == 1) r = imod(r*a, n); e >>= 1; a = imod(a*a, n); } return r; } int main(void) { int a, e; printf("input a:"); scanf("%d", &a); printf("input e:"); scanf("%d", &e); printf("%d^%d (mod %d) = %d\n" , a, e, N, pow_mod(a, e, N)); return 0; }
べき剰余を計算するのは関数pow_modです。
| 固定リンク
「C」カテゴリの記事
- CG法(2008.12.09)
- NTEmacs + MinGW + MSYSでWindows上にC言語開発環境を構築してみる - その5(2008.10.10)
- NTEmacs + MinGW + MSYSでWindows上にC言語開発環境を構築してみる - その4(2008.10.09)
- NTEmacs + MinGW + MSYSでWindows上にC言語開発環境を構築してみる - その3(2008.10.08)
- NTEmacs + MinGW + MSYSでWindows上にC言語開発環境を構築してみる - その2(2008.10.07)
「Algorithm」カテゴリの記事
- コラッツの問題(2008.02.21)
- フィボナッチ数を求める(2008.02.19)
- べき剰余を求める(2008.02.12)
- RSA暗号プログラム(2008.02.09)
- RSA暗号の公開鍵と秘密鍵を生成する(2008.02.08)
この記事へのコメントは終了しました。
コメント