Моя задача - зашифровать данные с использованием криптографии с эллиптической кривой в .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 всегда изменяется на новый, я хочу, чтобы он исправлялся, когда я шифровал одно и то же значение одним и тем же ключом. Спасибо –