首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RijndaelManaged时的CryptographicException

使用RijndaelManaged时的CryptographicException
EN

Stack Overflow用户
提问于 2012-10-23 04:16:35
回答 1查看 486关注 0票数 2

我试图使用.NET中的RijndaelManaged类加密一个文本字符串,但是我总是得到一个CryptographicException (“要解密的数据的长度是无效的”)。这条消息没有多大用处,尤其是当我尝试加密数据而不是解密数据时,它就会发生。下面是代码。

代码语言:javascript
复制
public static string EncryptKMSToken(string valueToEncrypt, string encryptionKey)
{
  string results = string.Empty;

  using (RijndaelManaged aes = new RijndaelManaged())
  {
    aes.BlockSize = 128;
    aes.KeySize = 128;
    aes.Padding = PaddingMode.PKCS7;
    aes.Mode = CipherMode.CBC;

    UTF8Encoding byteTransform = new UTF8Encoding();
    aes.Key = byteTransform.GetBytes(encryptionKey);
    ICryptoTransform encryptor = aes.CreateDecryptor(aes.Key, aes.IV);

    using (MemoryStream stream = new MemoryStream())
    {
      using (CryptoStream encryptStream = new CryptoStream(stream, encryptor, CryptoStreamMode.Write))
      {
        using (StreamWriter writer = new StreamWriter(encryptStream))
        {
          writer.Write(valueToEncrypt);
        }

        byte[] encryptedBytes = stream.ToArray();
        results = byteTransform.GetString(encryptedBytes);
      }
    }
  }

  return results;
}

错误发生在第三个using语句结束时(即writer.Write(valueToEncrypt)之后的行)。如果我试图将这两行移动到第三个using块中的下面两行,我最终得到一个空字符串(错误仍然发生)。我直接从这个站点(http://stackoverflow.com/questions/273452/using-aes-encryption-in-c-sharp)获取了这段代码,但它似乎不起作用。有谁有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-23 04:19:58

是的,但是如果你重读你的代码,我想你也会这样做的:

代码语言:javascript
复制
ICryptoTransform encryptor = aes.CreateDecryptor(aes.Key, aes.IV);

这是一个被命名为加密器的解密器。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13019127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档