【问题标题】:Cryptographic Exception: Padding is Invalid and Cannot be removed加密异常:填充无效且无法删除
【发布时间】:2011-12-25 17:00:34
【问题描述】:

好吧,我正在尝试在 VS 2010 上运行一个使用 AES 加密的客户端-服务器应用程序。但是,在收到一个大的、序列化和加密的文件时,程序会抛出异常:Cryptographic Exception: Padding is Invalid and Cannot be Removed.

我查看了 SOF 和其他领域,异常出现在 Web 服务和加密应用程序中。我还尝试了所有提到的解决方案,例如更改填充模式、处理加密器和解密器以及使用相同的密钥,不幸的是,没有一个有效,所以我想知道你们中是否有人有想法。

【问题讨论】:

标签: c# cryptography


【解决方案1】:

问题出在TCP连接上,在客户端将整个流写入网络流之前,它正在刷新数据,一点点while循环解决了这个问题

【讨论】:

    【解决方案2】:

    首先,AES 加密的商业原因是什么?不是质疑存在,而是您要保护什么样的数据?

    我问的原因是很多(如果不是大多数)应用程序可以通过使用 https 的服务传输数据并避免许多“自定义加密”编码方案就足够了。避免在两边都使用 AES 对象可以大大降低出错的可能性。

    其次,我会检查服务器实现,特别是如果它是基于 Web/服务的并且在农场中。在一个实例中缺少一个键会毁掉整个事情。

    第三,我会确保密钥是相同的。

    第四,我会单独检查代码(最好进行单元测试)并确保算法正确。实际上,我可能会先这样做。

    【讨论】:

    • 我正在尝试保护一个文件,这是一项家庭作业,所以我必须进行加密,所以不能采取不同的路线
    • 仔细检查您的算法。封装微软加密库的第一步往往是错误的。然后,您可以确保密钥是正确的,等等。
    猜你喜欢
    • 1970-01-01
    • 2010-09-23
    • 2017-07-26
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多