4
通过一些我已经peiced在一起了一些加密/解密方法是利用Rfc2898DeriveBytes
获得密钥和初始化向量的例子细算。我担心接收我的加密内容的一方必须能够解密它。由于我有过什么样的语言,但使用没有控制权(可能成为Java,PHP,C等。)我怎么确保他们能够获得的密钥和初始化向量(IV),因为我已经使用在Rfc2898DeriveBytes
类。净?这里是我正在使用的加密和解密方法。跨平台的加密/解密 - 处理密钥和初始化向量(IV)
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
谢谢!这是我需要知道的。我将发送“salt”和加密文本。 – webworm 2011-03-29 12:05:07