我似乎无法解决这个问题,我已经使用 GRC 处的随机生成器创建了我认为是 256 位 key 的内容。并将其与我的静脉注入(inject)结合起来。我不断收到以下错误:
指定的 key 对于该算法来说不是有效的大小。
非常感谢您的帮助,这是我用来加密/解密的代码:
Private Function Rijndael(ByVal sInput As String, ByVal bEncrypt As Boolean) As String
' Setup the Key and Initialization Vector.
Dim byteKey As Byte() = Encoding.UTF8.GetBytes("C3CA193570B26E5C3CBB50FD805A0E23BAFFABA135E82C41517EEDCB9B7C90AC")
Dim byteIV As Byte() = Encoding.UTF8.GetBytes("c+O2r)J~?L:$]u[2")
' Create an instance of the encyrption algorithm.
Dim _rijndael As New RijndaelManaged()
' Create an encryptor using our key and IV
Dim transform As ICryptoTransform
If bEncrypt Then
transform = _rijndael.CreateEncryptor(byteKey, byteIV)
Else
transform = _rijndael.CreateDecryptor(byteKey, byteIV)
End If
' Create the streams for input and output
Dim msOutput As New System.IO.MemoryStream()
Dim msInput As New CryptoStream(msOutput, transform, CryptoStreamMode.Write)
' Feed data into the crypto stream.
msInput.Write(Encoding.UTF8.GetBytes(sInput), 0, Encoding.UTF8.GetBytes(sInput).Length)
' Flush crypto stream.
msInput.FlushFinalBlock()
Return Convert.ToBase64String(msOutput.ToArray)
End Function
最佳答案
C3CA193570B26E5C3CBB50FD805A0E23BAFFABA135E82C41517EEDCB9B7C90AC
是 256 位长比特流的十六进制代码。
但是Encoding.UTF8.GetBytes
不会按照您的想法将十六进制代码转换为相应的字节。
因为该字符串中有 64 个字符,所以您将获得 64 个字节的 UTF-8 字节。这是一个 512 位长的比特流。
关于ASP.NET Rijndael 加密错误 - 指定的 key 不是该算法的有效大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1835896/