私はJava(私の好みのプログラミング言語)でいくつかの基本的な暗号化技術を試してきましたが、2つのクライアントペア間で共有秘密を生成するためにべき乗剰余を使用する簡単な例があります。
しかし、共有シークレットが与えられた場合、このシークレットを実際に使用して、ネットワーク経由で送信されるデータを暗号化/復号化またはスクランブル/スクランブル解除するための、実装が簡単な(まだ安全な)方法は何ですか?
たとえば、文字列がある場合:
"So long, and thanks for all the fish"
そして共有秘密(BigInteger
):
1110278255331388386297296974141977
共有シークレットがないと仲介者が解釈できないようにしながら、クライアントがお互いを理解できるように文字列をネットワーク経由で送信するにはどうすればよいでしょうか。
私は完成した実装を求めているのではなく、使用できるアルゴリズム/技術へのアイデアや参照だけを求めています。また、これは私自身の教育目的の単なる副次的なプロジェクトであるため、既存のプログラムまたはAPI(公開/秘密鍵など)に依存することも避けています。