使用 C# 使用来自 POST 方法的数据进行 PHP 加密和解密


PHP Encryption and Decryption with Data from POST Method using C#

我正在尝试使用 POST 方法使用从应用程序发送的密钥来加密字符串。POST 方法发送密钥以进行加密。但是脚本无法正常工作,请帮助我。

它不起作用的原因是您的填充是错误的。PKCS7 是重复的焊盘长度的字节值(即00000010 00000010,如果您填充 2 个字节)。它不是字符串值"0202",似乎没有任何 php 函数可以正确执行此操作,因此我建议您使用不需要填充的操作模式。c# 和 php 都支持 OFB。

您不能使用固定 IV。对于CBC模式,它相当不安全,对于OFB来说,它完全不安全。每次使用 mcrypt_create_iv 获取一个新的随机。然后,只需在发送密文时将 IV 附加到密文前面(它不需要加密)。请注意,您可能已经遇到的一个问题是 php 使用字符串,而 C# 使用 IV 的字节,即使现在您也可能没有得到正确的转换。为了确定,我可能会使用十六进制和函数来隐蔽。

其次,您需要使用某些东西来检测人们何时篡改您的数据,否则他们可能会通过底层加密库中的错误代码/计时问题读取密文。Hmacs 运行良好,在这里支持 php,这里支持 c#。HMAC 您的 IV+ 密文消息并在其前面附加输出。另一方面,对相同的数据运行 c# 等效函数,然后比较 HMAC 值。如果它们相同,则安全,如果不是,则拒绝。