ActionScript 3 - PHP发送数据通过AMF(或任何)加密


ActionScript 3 - PHP sending data via AMF (or whatever) encrypted

我需要两件事的帮助:

  1. 关于加密算法的建议,我可以使用它在服务器上编码数据,将其发送到AS3客户端并在那里解码。从我读到的,公钥-私钥听起来不错。

  2. 一个可以编码和解码的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中,从而使其公开。