gpt4 book ai didi

.net - 跨平台加密/解密 - 处理 key 和初始化向量(IV)

转载 作者:行者123 更新时间:2023-12-01 01:15:15 25 4
gpt4 key购买 nike

在查看了一些示例后,我总结了一些使用 Rfc2898DeriveBytes 的加密/解密方法。获取 key 和初始化向量。我担心的是接收我的加密内容的一方必须能够解密它。由于我无法控制他们使用的语言(可能是 Java、PHP、C 等),我如何确保他们能够像使用 Rfc2898DeriveBytes 一样导出 key 和初始化向量 (IV) .NET 中的类?这是我正在使用的加密和解密方法。

Public Shared Function EncryptText(ByVal plainText As String, ByVal password As String) As String

Dim aesCrypto As Rijndael = Nothing
Dim plainTextBytes As Byte()
plainTextBytes = Encoding.Default.GetBytes(plainText)

Dim rfc2898 As Rfc2898DeriveBytes
rfc2898 = New Rfc2898DeriveBytes(password, GenerateSalt(password))
aesCrypto = Rijndael.Create()
aesCrypto.Padding = PaddingMode.ISO10126
Dim tx As ICryptoTransform
tx = aesCrypto.CreateEncryptor(rfc2898.GetBytes(32), rfc2898.GetBytes(16))
Dim encryptedBytes As Byte()
encryptedBytes = tx.TransformFinalBlock(plainTextBytes, 0, plainTextBytes.Length)
Return Convert.ToBase64String(encryptedBytes)

End Function

Public Shared Function DecryptText(ByVal encryptedText As String, ByVal password As String) As String

Dim aesCrypto As Rijndael = Nothing
Dim encryptedTextBytes As Byte()
encryptedTextBytes = Convert.FromBase64String(encryptedText)

Dim rfc2898 As Rfc2898DeriveBytes
rfc2898 = New Rfc2898DeriveBytes(password, GenerateSalt(password))
aesCrypto = Rijndael.Create()
aesCrypto.Padding = PaddingMode.ISO10126
Dim tx As ICryptoTransform
tx = aesCrypto.CreateEncryptor(rfc2898.GetBytes(32), rfc2898.GetBytes(16))
Dim decryptedBytes As Byte()
decryptedBytes = tx.TransformFinalBlock(encryptedTextBytes, 0, encryptedTextBytes.Length)
Return Encoding.Default.GetString(decryptedBytes)

End Function

最佳答案

您会告诉接收者实现 PBKDF2,这是在 RFC2898 中定义的标准。和 PKCS #5 . Microsoft's documentation表示他们的函数使用 HMAC-SHA-1 作为伪随机函数,并使用 1000 作为默认迭代次数。这是他们需要的信息。

但是,您还需要传输使用 GenerateSalt() 创建的盐。在发送方。收件人不能只调用GenerateSalt()他们自己 - 它应该为每条消息随机生成。

关于.net - 跨平台加密/解密 - 处理 key 和初始化向量(IV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5466224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com