【问题标题】:ASP.NET Rijndael Encryption Error - Specified key is not a valid size for this algorithmASP.NET Rijndael 加密错误 - 指定的密钥不是此算法的有效大小
【发布时间】:2010-12-22 14:17:57
【问题描述】:

我似乎无法解决这个问题,我已经使用GRC 的随机生成器创建了一个我认为是 256 位的密钥,并将其与我的 IV 结合起来。我不断收到以下错误:

指定的密钥不是该算法的有效大小。

感谢您的帮助,这是我用来加密/解密的代码:

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

【问题讨论】:

    标签: asp.net encryption cryptography rijndaelmanaged


    【解决方案1】:

    C3CA193570B26E5C3CBB50FD805A0E23BAFFABA135E82C41517EEDCB9B7C90AC 是 256 位长比特流的十六进制代码。

    但是Encoding.UTF8.GetBytes 并没有按照你的想法将十六进制代码转换成相应的字节。

    因为您在该字符串中有 64 个字符,所以您将获得 64 个字节的 UTF-8 字节。这是一个 512 位长的比特流。

    【讨论】:

    • 是否有框架方法可以将十六进制字符串转换为字节[]?
    • 谢谢,它已排序 - 非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2011-02-24
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多