1

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

4

1 回答 1

1

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

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

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

于 2012-04-15T17:35:18.620 回答