【问题标题】:PHP Encryption and Decryption with Data from POST Method using C#使用 C# 的 POST 方法中的数据进行 PHP 加密和解密
【发布时间】:2012-04-15 08:50:53
【问题描述】:

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

【问题讨论】:

  • “无法正常工作”是如何表现出来的?你有错误吗?结果有错吗? 结果怎么错了?
  • @cilosis 请看编辑

标签: c# php .net post encryption


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。我不是加密或 PHP 方面的专家。你能给我一个例子吗
  • 如果您只是在发送数据时尝试加密数据,请使用 HTTPS/TLS。应该更容易、更安全
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-24
  • 2017-02-19
  • 1970-01-01
  • 2016-07-13
  • 2011-01-15
  • 2012-03-04
相关资源
最近更新 更多