私はECDiffieHellmanがどのように.Netの下で働いているのか理解しようとします。暗号化の次世代(CNG)の有無にかかわらずECDiffieHellmanを使用
私は、なぜ非常に似ているように見えるECDiffieHellmanの2つの実装があるのだろうかと思います。
Cng
は、暗号化の次世代(CNG)を表しています。
なぜこの二元論ですか?どちらを使うの?
System.Security.Cryptography.ECDiffieHellman.Create()
var alice = ECDiffieHellman.Create();
var bob = ECDiffieHellman.Create();
Assert.That(alice.PublicKey.ToXmlString(),
Is.Not.EqualTo(bob.PublicKey.ToXmlString()));
var aliceSharedSecret = alice.DeriveKeyMaterial(bob.PublicKey);
var bobSharedSecret = bob.DeriveKeyMaterial(alice.PublicKey);
Assert.That(aliceSharedSecret, Is.EqualTo(bobSharedSecret));
新しいSystem.Security.Cryptography.ECDiffieHellmanCng()
var alice = new ECDiffieHellmanCng();
var bob = new ECDiffieHellmanCng();
Assert.That(alice.PublicKey.ToXmlString(),
Is.Not.EqualTo(bob.PublicKey.ToXmlString()));
var aliceSharedSecret = alice.DeriveKeyMaterial(bob.PublicKey);
var bobSharedSecret = bob.DeriveKeyMaterial(alice.PublicKey);
Assert.That(aliceSharedSecret, Is.EqualTo(bobSharedSecret));