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

C# 使用C语言对来自POST方法的数据进行PHP加密和解密#,c#,php,.net,post,encryption,C#,Php,.net,Post,Encryption,我正在尝试使用POST方法从应用程序发送的密钥对字符串进行加密。POST方法发送密钥进行加密。但脚本工作不正常,请帮助我解决问题。它不工作的原因是填充错误。PKCS7是重复填充长度的字节值(即,如果填充2字节,则为000000 10 000000 10)。它不是字符串值“0202”,似乎没有任何php函数可以正确执行此操作,因此我建议您使用不需要填充的操作模式。OFB同时受到c#和php的支持 您不能使用固定IV。对于cbc模式,它相当不安全,对于OFB,它完全不安全。用于每次获得一个新的随机值

我正在尝试使用POST方法从应用程序发送的密钥对字符串进行加密。POST方法发送密钥进行加密。但脚本工作不正常,请帮助我解决问题。

它不工作的原因是填充错误。PKCS7是重复填充长度的字节值(即,如果填充2字节,则为000000 10 000000 10)。它不是字符串值“0202”,似乎没有任何php函数可以正确执行此操作,因此我建议您使用不需要填充的操作模式。OFB同时受到c#和php的支持

您不能使用固定IV。对于cbc模式,它相当不安全,对于OFB,它完全不安全。用于每次获得一个新的随机值。然后,只需在发送时将IV前置到密文(不需要加密)。值得注意的是,您可能已经遇到的一个问题是php使用字符串,而C#使用byts作为IV,即使现在您也可能无法获得正确的转换。为了确保这一点,我可能会使用hex和函数进行转换


其次,当人们篡改您的数据时,您需要使用一些东西来检测,否则他们可能会通过底层加密库中的错误代码/计时问题来读取密码文本。HMAC工作得很好,php和此处都支持HMAC。HMAC接收您的IV+密文消息,并将输出前置到该消息。在另一端,对相同的数据运行c#等效函数,然后比较HMAC值。如果它们是相同的,则您可以安全地拒绝。如果不是,则拒绝。

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

您不能使用固定IV。对于cbc模式,它相当不安全,对于OFB,它完全不安全。用于每次获得一个新的随机值。然后,只需在发送时将IV前置到密文(不需要加密)。值得注意的是,您可能已经遇到的一个问题是php使用字符串,而C#使用byts作为IV,即使现在您也可能无法获得正确的转换。为了确保这一点,我可能会使用hex和函数进行转换


其次,当人们篡改您的数据时,您需要使用一些东西来检测,否则他们可能会通过底层加密库中的错误代码/计时问题来读取密码文本。HMAC工作得很好,php和此处都支持HMAC。HMAC接收您的IV+密文消息,并将输出前置到该消息。在另一端,对相同的数据运行c#等效函数,然后比较HMAC值。如果它们是相同的,您可以安全地拒绝,如果不是,您可以拒绝。

如何显示“无法正常工作”?你有错误吗?结果错了吗?结果如何出错?@cillosis请查看编辑如何显示“工作不正常”?你有错误吗?结果错了吗?结果怎么会错?@cillosis请查看编辑谢谢。我不是加密或PHP方面的专家。请给我一个例子如果您发送数据时只是试图加密数据,请使用HTTPS/TLS。应该更容易、更安全谢谢。我不是加密或PHP方面的专家。你能给我一个例子吗?如果你只是想在发送数据时加密数据,请使用HTTPS/TLS。应该更容易、更安全