我需要两件事的帮助:
-
关于加密算法的建议,我可以使用它在服务器上编码数据,将其发送到AS3客户端并在那里解码。从我读到的,公钥-私钥听起来不错。
-
一个可以编码和解码的AS3库,与PHP的bcrypt兼容(再次说明,我认为bcrypt最适合这种数据传输)。
我不是安全专家,希望问题清楚而不笨拙。
EDIT:建议SSL是一个很好的选择,但目前我正在寻找非SSL的。
谢谢。
你的威胁模型是什么?如果您只是担心有人在数据传输时嗅探数据,那么就使用SSL。它对你的应用程序是透明的,通常你只需要安装一个证书,并将你的url从http://改为https://
如果你的主要威胁是有人在应用程序上运行调试器来捕获数据,那么你就有了一个更大的问题,并且将极不可能阻止某人"窃取"数据。
@Marc B指出SSL是非常安全的,但如果你绝对需要自定义加密…
如果服务器支持mcrypt(大多数PHP实现都支持),那么您可以使用mcrypt提供的任何加密方法(包括现代AES实现,IDEA, TEA等,等等[实际上是一个很长的列表])。然而,php脚本(当然)必须编写为期望加密数据。
查看http://php.net/manual/en/book.mcrypt.php获取有关PHP实现mcrypt的信息。
编辑:print_r(mycrypt_list_algorithms())在一个安装了php-mcrypt的fedora盒子上的快速转储显示…
Array
(
[0] => cast-128
[1] => gost
[2] => rijndael-128
[3] => twofish
[4] => arcfour
[5] => cast-256
[6] => loki97
[7] => rijndael-192
[8] => saferplus
[9] => wake
[10] => blowfish-compat
[11] => des
[12] => rijndael-256
[13] => serpent
[14] => xtea
[15] => blowfish
[16] => enigma
[17] => rc2
[18] => tripledes
)
rijndael是AES。有些由于不同的原因比其他的好,而有些只是垃圾(如DES)。
如果你不介意有人使用客户端调试器,只需使用ActionScript库,如as3crypto,它应该有你需要解码PHP发送的任何数据的一切。
没有必要进行公私钥加密,因为必须将私钥嵌入到SWF中,从而使其公开。