“填充无效且无法删除”-这段代码有什么问题吗?

2023-12-07

每次我运行这个并加密时,输出都是可变的,当我尝试解密时 我收到“填充无效且无法删除”。已经和这个斗争了一两天了,我很茫然。

    private static string strIV = "abcdefghijklmnmo"; //The initialization vector.
    private static string strKey = "abcdefghijklmnmoabcdefghijklmnmo"; //The key used to encrypt the text.

    public static string Decrypt(string TextToDecrypt)
    {
        return Decryptor(TextToDecrypt);
    }

    private static string Encryptor(string TextToEncrypt)
    {
        //Turn the plaintext into a byte array.
        byte[] PlainTextBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(TextToEncrypt);            

        //Setup the AES providor for our purposes.
        AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider();
        aesProvider.Key = System.Text.Encoding.ASCII.GetBytes(strKey);
        aesProvider.IV = System.Text.Encoding.ASCII.GetBytes(strIV);
        aesProvider.BlockSize = 128;
        aesProvider.KeySize = 256;            
        aesProvider.Padding = PaddingMode.PKCS7;
        aesProvider.Mode = CipherMode.CBC;

        ICryptoTransform cryptoTransform = aesProvider.CreateEncryptor(aesProvider.Key, aesProvider.IV);            
        byte[] EncryptedBytes = cryptoTransform.TransformFinalBlock(PlainTextBytes, 0, PlainTextBytes.Length);
        return Convert.ToBase64String(EncryptedBytes);                        
    }

    private static string Decryptor(string TextToDecrypt)
    {
        byte[] EncryptedBytes = Convert.FromBase64String(TextToDecrypt);

        //Setup the AES provider for decrypting.            
        AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider();
        aesProvider.Key = System.Text.Encoding.ASCII.GetBytes(strKey);
        aesProvider.IV = System.Text.Encoding.ASCII.GetBytes(strIV);
        aesProvider.BlockSize = 128;
        aesProvider.KeySize = 256;            
        aesProvider.Padding = PaddingMode.PKCS7;
        aesProvider.Mode = CipherMode.CBC;

        ICryptoTransform cryptoTransform = aesProvider.CreateDecryptor(aesProvider.Key, aesProvider.IV);
        byte[] DecryptedBytes = cryptoTransform.TransformFinalBlock(EncryptedBytes, 0, EncryptedBytes.Length);
        return System.Text.Encoding.ASCII.GetString(DecryptedBytes);
    }
}

您需要设置BlockSizeKeySize在您设置之前KeyIV。此外,您可能应该为每条消息生成一个随机 IV,并注意ICryptoTransform实施IDisposable所以这些物体应该被处理掉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“填充无效且无法删除”-这段代码有什么问题吗? 的相关文章

随机推荐

  • 异常:“数据库行 [UnmarshalRecordImpl()] 中缺少类指示符字段。”使用 EclipseLink JAXB (MOXy) 解组 XML 时

    是否有任何方法可以使用 XmlDecriminatorNode XmlDecrimintatorValue 注释对下一个 XML 进行解组 或者有任何解决方法
  • 表示换行的首选位置

    假设我想在 HTML 表格单元格中显示以下文本 Honey Nut Cheerios Wheat Chex Grape Nuts Rice Krispies Some random cereal with a very long name
  • Python ValueError:chr() arg 不在范围内(256)

    所以我正在学习python并重做一些旧项目 该项目涉及从命令行获取字典和要翻译的消息 并翻译该消息 例如 btw 你好 你好 将被翻译为 顺便说一句 你好 你好吗 我们使用教授提供的扫描仪来读取标记和字符串 如果有需要我也可以在这里发布 这
  • Android 上无法从 xmpp 服务器获取公共房间列表?

    大家好 我是 Android 新手 目前陷入困境 我必须返回在 xmpp 服务器上创建的公共房间列表 我遇到的问题是下面的代码对于java工作正常 但在android的情况下存在空指针异常 任何有关此问题的帮助将不胜感激 我正在使用 ope
  • BigQuery 中的游标

    BigQuery 脚本中有没有一种方法可以像 MySql 脚本中那样声明游标 我必须安排一个脚本定期运行 有一个逻辑 步骤1 提取所有企业名称 多行输出 步骤 2 对于每个企业 转到企业的表并运行一些更新查询 MySql 有游标 这有助于在
  • 我可以在 Flexbox 中拉取项目吗?

    我需要创建以下结构 item item item item item 里面有5件物品 它们都垂直对齐到中间 第 3 个元素被拉到左边 最后 2 个元素被拉到右边 我知道我可以使用浮动 但它有几个缺点 包括麻烦的垂直对齐 我决定使用flexb
  • php 5.1.6 json_encode 和 codeigniter

    我正在构建一个 codeigniter 应用程序 它在很多地方使用 json encode 提供 ajax 数据 今天我了解到服务器有 php 5 1 6 它不支持此方法 或 json decode 我能做什么 请帮忙 有一个 json e
  • Char 数组初始化时出错

    它可能很简单 但我对 c 很陌生在 char 数组中 我们可以让编译器计算字符串中的字符数 例如 char myarray stringvar 没关系 但是如果我按如下方式更改代码 编译器会给出错误 string myvar stringv
  • 为什么模拟器不能在android中发送电子邮件

    我正在寻找从我的 Android 应用程序发送电子邮件的代码 我用谷歌搜索并读到给出的代码不会在模拟器上运行 我必须将代码放在实际设备上才能发送电子邮件 为什么会这样呢 先感谢您 这可能会有所帮助Android 电子邮件意图 如果您使用模拟
  • Polly 在重试时更改查询字符串

    我正在使用 NET 5 并希望使用 Polly 来更改重试时请求的查询字符串 背景 我的 IP 地址允许每分钟发出固定的请求配额 如果超出限制 我会收到特定的 4xx 状态代码 在本例中 我想添加一个查询字符串参数 key xxx来处理峰值
  • JTextArea位置,setBounds不起作用?

    我想要一个JTextArea在某个位置上 我尝试了几件事 比如使用不同的LayoutManagers no LayoutManager无论如何 setLayout null 等等 无论我做什么 似乎setBounds setLocation
  • magento 网站迁移后 CSS 不加载

    我按照描述的步骤将我的 magento 网站迁移到不同的服务器here 一切都很顺利 除了当我加载页面时 CSS 不会加载 而且我只是以纯文本形式获取页面 我使用 firebug 并注意到系统用于获取 CSS 文件的路径在 FTP 服务器中
  • 在 BST 中查找所有小于 x 的数字

    我该怎么做 我不确定什么时候才能停止 bst 搜索 如果树的每个节点都有一个字段numLeft它告诉你它的左子树中有多少个节点 也计算它自己 然后你可以这样做O log N 继续添加即可numLeft对于每个值小于的节点的全局结果变量x c
  • 如何将 char* 转换为 TCHAR[ ]? [复制]

    这个问题在这里已经有答案了 char stheParameterFileName argv 1 I m passing the file name as a parameter TCHAR szName 512 我怎样才能转换char to
  • 大 og:提要中的图像

    我注意到 Facebook 有两种不同的方式在用户的提要中显示带有图像的开放图谱故事 一种是带有小图像以及旁边的标题和描述 example 一张带有更大的图像 其下方有标题和描述 example 按照教程 我能够生成大图像 然而 现在我要离
  • VBA复制网站数据

    有人可以帮助我指出如何通过 VBA 将特定数据从网站复制到 Excel 工作表的正确方向吗 我尝试使用宏记录器和网络查询 但它不断显示错误脚本 并且黄色箭头没有出现在我想要复制的部分 这是我要复制的网站http etfdb com etf
  • @googlemaps/markerclusterer:如何设置 maxZoom?

    我试图弄清楚如何设置 maxZoom 属性 我找到了可接受的参数列表 new MarkerClusterer map markers algorithm renderer onClusterClick 所以 我不想实现我自己的算法 我觉得默
  • PyQt4 - 将文件拖放到 QPushButton 中

    我认为标题是相当不言自明的 我正在努力创建一个小型独立应用程序 要求用户将音频文件拖放到按钮上 然后使用文件路径等将文件与硬件上的相应按钮关联起来 我已经遵循了大量的小部件拖放教程 我的朋友也遵循了列表的拖放教程 但是我开始相信这不能为按钮
  • 在单个链表中的任意索引处插入新节点

    我将如何创建一个函数 允许我在链表中 的任何索引处插入新节点 这是结构 struct node int data struct node next 这是函数 注意只有一个双指针 索引和数据参数 void insertN struct nod
  • “填充无效且无法删除”-这段代码有什么问题吗?

    每次我运行这个并加密时 输出都是可变的 当我尝试解密时 我收到 填充无效且无法删除 已经和这个斗争了一两天了 我很茫然 private static string strIV abcdefghijklmnmo The initializat