2012-04-15 31 views
1

我试图使用通过POST方法从应用程序发送的密钥来加密字符串。POST方法发送加密密钥。但脚本无法正常工作帮帮我。使用C#进行POST加密和解密的方法使用C#

+2

“不能正常工作”是如何体现的?你有错误吗?结果是否错误? *结果如何*错了? – deceze 2012-04-15 08:52:32

+0

@cillosis请参阅编辑 – techno 2012-04-15 09:21:57

+0

@deceze请参阅编辑 – techno 2012-04-15 09:35:44

回答

1

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

你不能使用固定的IV。对于cbc模式,对于OFB来说,它是相当不安全的,它完全不安全。使用mcrypt_create_iv每次获得一个新的随机数。然后,当您发送它时,只需将IV添加到密文(不需要加密)即可。需要注意的是,您可能已经遇到的一个问题是,php使用字符串,而C#使用byts作为IV,并且即使您现在也可能无法获得正确的转换。我可能会使用十六进制和函数来转换/从那里只是为了确保。第二,当人们篡改数据时,您需要使用某些东西来检测,否则他们可能会通过底层加密库中的错误代码/计时问题读取密文。 Hmacs运行良好,并且支持here for php和c#。 HMAC你的IV +密文消息并在其前面输出。另一方面,在相同的数据上运行c#等价函数,然后比较HMAC值。如果他们是一样的,那么你的安全,如果不是,拒绝。

+0

Thanks.I'm不是专家在加密或PHP.Can请给我一个例子 – techno 2012-04-16 14:58:00

+0

如果你只是想加密数据当您发送它时,请使用HTTPS/TLS。应该更容易,更安全 – imichaelmiers 2012-04-16 17:37:11

+0

号我不能这样做。 – techno 2012-04-17 11:39:46

相关问题