c#で学習目的でrsa -algoを実装しようとしています
私が抱えている問題は、ランダムに作成したキーの一部が機能しないことです。
いくつかの詳細:
オーバーフロー例外などを防ぐために、すでに BigInteger 型を使用しています。
数学的な依存関係をチェックしました(Primsとしてのpとn、e <!(N)と相対Primeとe> 1)
- 拡張 Euclid Algo は正常に動作しています。オンライン電卓 ( http://johannes-bauer.com/compsci/eea/index.php?zahl1=469&zahl2=2280&step=9999&detailliert=1&stepbystep=1 )で確認しました。
- 私の暗号化と復号化の手順はうまく機能しています。使用されているキーが間違っているに違いない?!
機能していないいくつかのキーをキャプチャしました:
Prime numbers: p = 743 q = 37
Public key: e = 6371 N = 27491
Private Key: d = 524 >(N) = 26712
Prime numbers: p = 859 q = 47
Public key: e = 2239 N = 40373
Private Key: d = 647 >(N) = 39468
Prime numbers: p = 823 q = 29
Public key: e = 9173 N = 23867
Private Key: d = 1538 >(N) = 23016
Prime numbers: p = 719 q = 31
Public key: e = 1759 N = 22289
Private Key: d = 851 >(N) = 21540
Prime numbers: p = 149 q = 47
Public key: e = 1317 N = 7003
Private Key: d = 502 >(N) = 6808
Prime numbers: p = 859 q = 37
Public key: e = 9859 N = 31783
Private Key: d = 2790 >(N) = 30888
私が見逃した依存関係はありますか?それとも、コード内または C# 内の何かでしょうか?
アップデート:
これは私のものではない拡張 Euclid のコードです( http://amir-shenodua.blogspot.de/2012/06/extended-gcd-algorithm-extended.html )
これは、プリムを計算するための関数です( http://pastebin.com/79Pvsxe8 )。テスト ケースのランダムを 100 に制限しました。C# ランダム クラスを使用することは一種のセキュリティ脅威であることを知っています。
これらは私のRSA関数です(http://pastebin.com/2GxS9EDK)