私の仕事は.NETの楕円曲線暗号(クライアント固有)を使用してデータを暗号化することです。毎回。ECDiffieHellmanCngを使用してデータを暗号化するために独自のキーを使用するには
パスワード「S3curEChaNNel_01」を作成するなど、このプロセスに独自のキーを使用する必要があります。それをバイトに変換してキーとして使用しますが、これを行う方法は見つけられません。
Using alice As New ECDiffieHellmanCng()
Dim abData() As Byte
Dim Str = txtKey.Text 'custom password
abData = System.Text.Encoding.Default.GetBytes(Str)
Str = System.Text.Encoding.Default.GetString(abData)
Dim bobPublicKey() As Byte
Dim bobKey() As Byte
Dim bob As New ECDiffieHellmanCng()
bob.KeyDerivationFunction = ECDiffieHellmanKeyDerivationFunction.Hash
bob.HashAlgorithm = CngAlgorithm.Sha256
bobPublicKey = bob.PublicKey.ToByteArray()
bob.HmacKey = abData
bobKey = bob.DeriveKeyMaterial(CngKey.Create(CngAlgorithm.Sha256))
'at this line i get an exception, "The requested operation is not supported."
'Dim aliceKey As Byte() = alice.DeriveKeyMaterial(CngKey.Create(CngAlgorithm.Sha256))
Dim encryptedMessage As Byte() = Nothing
Dim iv As Byte() = Nothing
txtOutput.Text = ByteArrayToString(Encrypt(bobKey, txtPlainStr.Text, encryptedMessage, iv))
End Using
これを見ていただきありがとうございますが、自分のキーを使用することは可能ですか?はいの場合は、どうですか?ありがとう –
可能ですが、Diffie Hellmanは鍵を交換するために使用され、相手側に安全にパスワードを送信することはありません。 あなたは 'S3curEChaNNel_01'というパスワードをKDFのパラメータとして使用し、それから鍵を得ることができます。しかし、パスワードを相手側に確実に送る方法はありません(少なくとも私が知っているところから)。 データを送信している人がパスワードを知らないとします。 – ProXicT
お返事ありがとうございます。最後に動作しますが、私は固定hmacを設定する方法はありますか?値が暗号化されるたびに、hmacは常に新しいものに変更されます。同じ鍵で同じ値を暗号化すると固定されます。ありがとう –