使用私钥加密/解密

时间:2011-06-16 18:18:19

标签: php flash security encryption private-key

我想在我拥有的一些Flash / PHP应用程序中实现一些安全性。

我有一些与PHP文件通信的Flash应用程序,PHP正在将数据作为get字符串发送(例如:name=John&sname=Doe&age=24&balance=12.4)。而不是所有这些变量,我希望它发送一个包含这些值的变量(例如:flashvar=jr9afgaw9-fg90agfawf7gw),然后Flash将解密字符串并获得真实有用的 VARS。

我想使用私钥对其进行加密,并使用相同的私钥在Flash中解密。如果有人想要解码PHP发送的消息,他将不得不反编译flash文件并找到我在Flash中使用的私钥来解码消息然后解码它。

我在此发布的原因是因为我想使用加密算法,只允许使用私钥进行加密/解密。

我是密码学领域的新手,我想对此提出一些建议。

谢谢!

3 个答案:

答案 0 :(得分:3)

“共享私钥”被称为对称密钥。目前使用的标准对称算法是AES。我不知道php或flash是否具备使用AES的能力(Google确实如此),但如果他们这样做,您可以在代码中硬编码AES密钥并使用它来加密和解密数据。但是,对密钥进行硬编码是一种非常糟糕的密码术,并且只是混淆。

要记住的另一件事是您正在使用的密码模式。密码块链接(CBC)需要使用初始化向量(类似于哈希值的盐),因此使用相同密钥加密但使用不同IV的两个相同值将导致不同的密文。 ECB不需要初始化向量,但安全性较低。根据您的需要,我会选择ECB,因此您不必担心IV。

Google是查找信息的好方法,您应该使用它。

答案 1 :(得分:1)

快速搜索后,我发现ActionScript 3支持通过ASCrypt3库进行加密。据该网站称,AES Rijndael得到了支持。

使用mcrypt扩展名的PHP也支持Rijndael。这是一个很好的例子taken from the manual

$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = "This is a very secret key";
$text = "Meet me at 11 o'clock behind the monument.";
echo strlen($text) . "\n";

$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
echo strlen($crypttext) . "\n";

答案 2 :(得分:0)

如果您想加密数据,我会使用ASCrypt3o库 它运行良好,支持多种加密方式 您可以看到它的演示here点击密钥选项卡。