在php和flex之间交换256个加密数据

时间:2011-07-07 17:19:51

标签: php flex aes

我需要2套加密/解密函数才能在PHP和AS3下运行。

我找到了AS3Crypto(适用于Flex)和mcrypt_encrypt(适用于PHP),本文介绍了如何将它们用于DES加密: http://www.zedia.net/2009/as3crypto-and-php-what-a-fun-ride/

然后我尝试用AES-256替换DES加密,因为DES似乎太容易受到强力攻击。 Flex和PHP中AES加密的结果是不同的。 有没有人知道(和测试过)as3和php中任何等效的aes加密函数?

如果我不够清楚,这是另一个用户遇到同样问题的帖子: http://forum.openlaszlo.org/showthread.php?t=13709

谢谢!

1 个答案:

答案 0 :(得分:0)

我已经做了类似的不同后端,让它们匹配可能会很头疼。

我将从经验中高度自信地告诉您,您遇到的问题很可能是填充在两者之间不匹配或者来回编码(Hex)。

这是我几年前做过的一个实现的冷却代码,最快我可以挖掘......

<cfsetting enablecfoutputonly="yes">
<cfparam name="form.k" default="1bbee91984f8b5bc032b6f67a665704e"/>
<cfscript>
textToEncrypt = 'printButton=No&saveButton=No';
encKey = ToBase64(BinaryDecode(form.k,"Hex"));
encryptedText = encrypt(textToEncrypt, encKey, 'AES', 'Hex');
</cfscript>
<cfoutput>settings=#encryptedText#</cfoutput>

(旁注:不冷却真棒?呵呵:P)

flex中的解密方:

private function settingsEncResponse( e : ResultEvent ) : void {
            // decrypt settings string
            var o : Object = e.result;
            var k:String = pKey; // key to decrypt with
            var kdata:ByteArray;
            kdata = Hex.toArray(k);
            var txt:String = o.settings; // text to decrypt
            var data:ByteArray;
            data = Hex.toArray(txt);
            var pad:IPad = new PKCS5;
            var mode:ICipher = Crypto.getCipher("aes-ecb", kdata, pad);
            pad.setBlockSize(mode.getBlockSize());
            mode.decrypt(data);
            currentInput = data;
            var decryptedSettings : String = Hex.toString(Hex.fromArray(currentInput));