【发布时间】:2012-04-15 08:50:53
【问题描述】:
我正在尝试使用 POST 方法从应用程序发送的密钥加密字符串。POST 方法发送用于加密的密钥。但是脚本无法正常工作,请帮帮我。
【问题讨论】:
-
“无法正常工作”是如何表现出来的?你有错误吗?结果有错吗? 结果怎么错了?
-
@cilosis 请看编辑
标签: c# php .net post encryption
我正在尝试使用 POST 方法从应用程序发送的密钥加密字符串。POST 方法发送用于加密的密钥。但是脚本无法正常工作,请帮帮我。
【问题讨论】:
标签: c# php .net post encryption
它不起作用的原因是您的填充错误。 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 值。如果它们相同,则安全,否则,拒绝。
【讨论】: