在线计算器如何使用 AES-256 进行加密,因为它们不可互操作?

How do online calculators use AES-256 to do encryption since they are not interoperable?

我想在 C# 中使用 AES 256。我在网上找到许多使用 c# 的示例,例如 this.

而且我还发现了很多使用 this or this or this 等在线工具的示例。但是,当我尝试使用其他网站上的网站密钥进行加密时,解密不起作用,并且没有加密密钥适用于应用程序。

我需要一个示例它如何与在线网站一起使用或更多说明。

当你想要加密某些东西时,可以配置各种东西。您显然需要 select 一个加密算法 (AES) 和一个密钥长度 (256)。

加密算法适用于二进制数据,因此您的密码必须转换为二进制数据。 http://www.codeproject.com/Articles/769741/Csharp-AES-bits-Encryption-Library-with-Salt uses an Rfc2898DeriveBytes to do it. Very good. It isn't clear how http://uttool.com/encryption/aes/default.aspx does it, and http://aes.online-domain-tools.com/ 可能只是将您的密码转换为 UTF8 并扩大它(用零字节填充)或削减它(但它不是很清楚)。

然后你必须select如何加密多个数据块(参见http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation). The basic mode is ECB, where every block of data is encrypted in an independent way. It isn't very secure because two equal blocks of data will be encrypted in the same way resulting in the same encrypted data. An attacker will at least know that there is some data that is repeated. The codeproject example uses CBC, much more secure. The CBC encrypts a block based on the previous block, so that even if you repeat the same data, the encrypted data will be different. http://uttool.com/encryption/aes/default.aspx isn't clear what it does. http://aes.online-domain-tools.com/让你select算法。

其中一些分组密码模式需要 IV(初始化向量)来预初始化分组密码模式。 codeproject 示例使用了 Rfc2898DeriveBytes 获得的部分二进制数据,而 http://aes.online-domain-tools.com/ 为您提供了一个基于密码 SHA1 的预定义数据,然后您可以更改。

请注意 http://aes.online-domain-tools.com/ 对所有这些都有很好的解释。

从技术上讲,当您要加密某些数据时,通常会设置另一个 "thing":填充。块密码一次只能处理一定数量的字节(AES 16 字节)。如果您的数据较短,则必须 "pad" 到 16 字节。如果您的数据较长,则将其分成 16 个字节的块。你仍然可以有一个小于 16 字节的块(例如,如果你有 17 个字节,它是 16 + 1 个字节,所以 16 +(1 + 15 个填充)字节。有多种方法可以进行此填充。

重点是:除非你 "align" 所有这些 fiddle 东西,否则你无法从一个站点加密并从另一个站点解密。