내 작업은 .Net (클라이언트에서 특정)의 타원 곡선 암호화를 사용하여 데이터를 암호화하는 것이지만 Microsoft의 샘플을 사용해 보았지만 자체 키를 생성하는 것으로 보입니다. 매번어떻게 내 자신의 키를 사용하여 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은 항상 새로운 키로 변경됩니다. 같은 키로 동일한 값을 암호화 할 때 고정되어 있습니다. 감사합니다. –