ASP.NET Rijndael 加密错误 - 指定的 key 不是该算法的有效大小

标签 asp.net encryption cryptography rijndaelmanaged

我似乎无法解决这个问题,我已经使用 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/

相关文章:

c# - 从列表中删除项目 ASP.NET Webforms

c# - 托管 ASP.Net 应用程序中的用户无法区分

java - 反转模数运算符以进行解密

java - 将 AES 文件解密程序从 Java 重写为 C#

c# - 使用 gmail 通过 asp.net 登录?

c# - 我是否需要处理来自 Request.CreateResponse() 的 HttpResponseException?

java - 如何强制 CipherOutputStream 完成加密但保持底层流打开?

node.js - 使用 Node.js 加密进行 PKCS5 填充

version-control - 管理加密 key 的好方法?

c - 长文件的RSA加密/解密