Csharp/C#教程:如何在C#中使用AES加密,以便我可以在PHP中解密它?分享


如何在C#中使用AES加密,以便我可以在PHP中解密它?

我在PHP中找到了一些加密的答案,在C#中找到了Decrypt的答案,但目前还无法扭转这个过程……

背景是我想:

在C#中:AES加密文件的内容。 将数据(可能通过POST通过POST)上传到服务器。

在PHP中:接收并保存文件。

在PHP中(以后):解密文件。

我特别想在使用SSL / TLS之外加密它(虽然我可能也必须这样做),因为我需要知道文件在存储在服务器上时仍然是加密的(并且可以解密!)。

要在C#中加密,我正在使用:

Rijndael RijndaelAlg = Rijndael.Create(); RijndaelAlg.KeySize = 128; RijndaelAlg.Mode = CipherMode.CBC; CryptoStream cStream = new CryptoStream(fStream, RijndaelAlg.CreateEncryptor(Key, IV), CryptoStreamMode.Read); 

并在PHP中解密:

  mcrypt_cbc(MCRYPT_RIJNDAEL_128, $key, $buffer, MCRYPT_DECRYPT, $iv); 

一般来说,它只取决于双方选择正确的选项:

请在此处查看有关这些内容的大量信息。 特别是填充似乎是大多数互操作性问题的根源,因为PHP的mcrypt默认使用NULL -padding并且没有内置支持任何其他填充模式,而例如.NET甚至不提供使用NULL的选项-padding(因为它可能在加密二进制数据时导致问题)。

我知道这是前一段时间被问到的,但我想我会为别人发布我的解决方案。 我在PHP和C#中编写了一个快速代码示例,它允许您以两种方式加密/解密。 我有一些问题,让双方的设置得以解决。 填充的差异会让它以一种方式解密,而不是另一种方式解密

https://github.com/dchymko/.NET–PHP-encryption

希望能帮助一些人。

你和两者使用相同的模式吗? 即你使用CBC(而不是ECB)。 如果您不理解我刚才所说的内容,请发表评论,我会详细解释,因为它有相当大的安全影响。

几个月前我遇到了类似的问题 – 我有一个必须使用AES加密的项目,我必须确保在C#和A C ++组件之间使用完全相同的算法。 我最终基于此codeplex文章中的AES加密包装器实现了两者使用的共享DLL库:

https://www.codeproject.com/KB/security/WinAESwithHMAC.aspx

上述就是C#学习教程:如何在C#中使用AES加密,以便我可以在PHP中解密它?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1011517.html

(0)
上一篇 2021年12月30日
下一篇 2021年12月30日

精彩推荐