【问题标题】:Encrypt / Decrypt with Private key使用私钥加密/解密
【发布时间】:2011-06-16 18:18:18
【问题描述】:

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

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

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

我在这里发帖的原因是因为我想使用一种加密算法,它只允许使用私钥进行加密/解密。

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

谢谢!

【问题讨论】:

  • 为什么是谷歌?只是BIN​​G它
  • @Gens 因为他想要有效的结果:)

标签: php flash security encryption private-key


【解决方案1】:

“共享私钥”被称为对称密钥。今天使用的标准对称算法是AES。我不知道 php 或 flash 是否有能力使用 AES(Google 有),但如果有,您可以在代码中硬编码 AES 密钥并使用它来加密和解密数据。但是,对密钥进行硬编码是非常糟糕的密码学,只不过是混淆。

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

Google 是一种很好的查找信息的方式,您应该使用它。

【讨论】:

  • 感谢您提供的信息。这个想法实际上是在两种语言(PHP 和 FLASH)中将算法编码为函数,然后包含它们并使用它们,但我发现 PHP 和 FLASH 已经预先集成了 RIJNDAEL 256 函数,我可能会这样做。
【解决方案2】:

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

在 PHP 中使用 mcrypt 扩展也支持 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";

【讨论】:

  • 任何人都可以确认 ASCRYPT3 库功能齐全吗?我使用了这个 PHP 函数,但我无法解密 flash 中的输出: function encrypt($text){ $key = "53cded30ff7ba54d65b939fd594e3d63"; $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC); //获取CBC模式下的向量大小 $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); //创建向量 $cryptedtext = mcrypt_encrypt (MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv); //使用MCRYPT_RIJNDAEL_256算法加密 return base64_encode($cryptedtext); }
【解决方案3】:

如果您想加密数据,我会使用 ASCrypt3o 库。
它工作得很好,并且支持多种类型的加密。
你可以看到它的演示here点击秘钥标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 2021-02-17
    • 2012-04-11
    • 2015-07-31
    相关资源
    最近更新 更多