Flash加密PHP解密 [英] Flash Encryption PHP Decryption

查看:144
本文介绍了Flash加密PHP解密的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

解决方案

对于Flash,您可以通过 http://code.google.com/p/as3crypto/ 它支持




  • RSA

  • DES

  • AES

  • Blowfish -

  • MD5

  • SHA

  • X509

  • RC4



PHP可以使用 mycrypt http://www.php.net/manual/en/mcrypt.examples.php RSA,DES,AES ,Blowfish,MD5,SHA,X509,RC4所有上述加密也支持



Flash类示例

  package 
{
import flash.display.Sprite;
import flash.utils.ByteArray;

import com.hurlant.crypto.symmetric.ICipher;
import com.hurlant.crypto.symmetric.IVMode;
import com.hurlant.crypto.symmetric.IMode;
import com.hurlant.crypto.symmetric.NullPad;
import com.hurlant.crypto.symmetric.PKCS5;
import com.hurlant.crypto.symmetric.IPad;
import com.hurlant.util.Base64;
import com.hurlant.util.Hex;
import com.hurlant.crypto.Crypto;

public class CryptoCode extends Sprite
{
private var type:String ='simple-des-ecb';
private var key:ByteArray;

public function CryptoCode()
{
init();
}

private function init():void
{
key = Hex.toArray(Hex.fromString('TESTTEST')); //只能是8个字符长

trace(encrypt('TEST TEST'));
trace(decrypt(encrypt('TEST TEST'));
}

私有函数encrypt(txt:String =''):String
{
var data:ByteArray = Hex.toArray(Hex.fromString(txt));

var pad:IPad = new PKCS5;
var mode:ICipher = Crypto.getCipher(type,键,pad);
pad.setBlockSize(mode.getBlockSize());
mode.encrypt(data);
返回Base64.encodeByteArray(data);
}
private function decrypt(txt:String =''):String
{
var data:ByteArray = Base64.decodeToByteArray(txt);
var pad:IPad = new PKCS5;
var mode:ICipher = Crypto.getCipher(type,key,pad);
pad.setBlockSize(mode.getBl ockSize());
mode.decrypt(data);
返回Hex.toString(Hex.fromArray(data));
}
}

}

PHP类示例

  class Crypt 
{
var $ key = NULL;
var $ iv = NULL;
var $ iv_size = NULL;

函数Crypt()
{
$ this-> init();
}

函数init($ key =)
{
$ this-> key =($ key!=)? $ key:;

$ this-> algorithm = MCRYPT_DES;
$ this-> mode = MCRYPT_MODE_ECB;

$ this-> iv_size = mcrypt_get_iv_size($ this-> algorithm,$ this-> mode);
$ this-> iv = mcrypt_create_iv($ this-> iv_size,MCRYPT_RAND);
}

函数加密($ data)
{
$ size = mcrypt_get_block_size($ this-> algorithm,$ this-> mode);
$ data = $ this-> pkcs5_pad($ data,$ size);
return base64_encode(mcrypt_encrypt($ this-> algorithm,$ this-> key,$ data,$ this-> mode,$ this-> iv));
}

函数解密($ data)
{
返回$ this-> pkcs5_unpad(rtrim(mcrypt_decrypt($ this-> > key,base64_decode($ data),$ this-> mode,$ this-> iv)));
}

函数pkcs5_pad($ text,$ blocksize)
{
$ pad = $ blocksize - (strlen($ text)%$ blocksize);
返回$文本。 str_repeat(chr($ pad),$ pad);
}

函数pkcs5_unpad($ text)
{
$ pad = ord($ text {strlen($ text)-1});
if($ pad> strlen($ text))return false;
if(strspn($ text,chr($ pad),strlen($ text) - $ pad)!= $ pad)return false;
return substr($ text,0,-1 * $ pad);
}
}

使用Flash p>

  //加密类的实例
private var _crypto:CryptoCode;
public var myLoader:URLLoader;

//使用加密密钥创建实例
_crypto = new CryptoCode(PASSWORD);

//发送隐藏字符串到php脚本
var variables:URLVariables = new URLVariables();
variables.message = _crypto.encrypt(tosend_in.text);

//使用POST方法创建请求
var request:URLRequest = new URLRequest(http://www.lecrabe.net/wordpress/demo/crypt/scripts/testcrypto.php );
request.method = URLRequestMethod.POST;
request.data = variables;

//发送请求
myLoader.load(request);

使用PHP

  include_oncelib / cryptlib.php; 

//初始化Crypto Class的新实例
$ crypto = new Crypt;

//加密密钥的初始值
$ result = $ crypto-> init(PASSWORD);

//获取POST数据
$ messagefromflash = $ _POST [message];

//解密数据
$ decryptpted_messagefromflash = $ crypto-> decrypt(utf8_decode($ messagefromflash));


Please advise for encryption in flash that can be decrypted easily in PHP.

解决方案

For Flash you can http://code.google.com/p/as3crypto/ it supports

  • RSA
  • DES
  • AES
  • Blowfish -
  • MD5
  • SHA
  • X509
  • RC4

PHP you can use mycrypt http://www.php.net/manual/en/mcrypt.examples.php RSA, DES, AES, Blowfish, MD5, SHA, X509, RC4 all the above encryption also supported

Flash Class Example

package
{
        import flash.display.Sprite;
        import flash.utils.ByteArray;

        import com.hurlant.crypto.symmetric.ICipher;
        import com.hurlant.crypto.symmetric.IVMode;
        import com.hurlant.crypto.symmetric.IMode;
        import com.hurlant.crypto.symmetric.NullPad;
        import com.hurlant.crypto.symmetric.PKCS5;
        import com.hurlant.crypto.symmetric.IPad;
        import com.hurlant.util.Base64;
        import com.hurlant.util.Hex;
        import com.hurlant.crypto.Crypto;

        public class CryptoCode extends Sprite
        {
                private var type:String='simple-des-ecb';
                private var key:ByteArray;

                public function CryptoCode()
                {
                        init();
                }

                private function init():void
                {
                        key = Hex.toArray(Hex.fromString('TESTTEST'));// can only be 8 characters long

                        trace(encrypt('TEST TEST'));
                        trace(decrypt(encrypt('TEST TEST'));
                }

                private function encrypt(txt:String = ''):String
                {
                        var data:ByteArray = Hex.toArray(Hex.fromString(txt));

                        var pad:IPad = new PKCS5;
                        var mode:ICipher = Crypto.getCipher(type, key, pad);
                        pad.setBlockSize(mode.getBlockSize());
                        mode.encrypt(data);
                        return Base64.encodeByteArray(data);
                }
                private function decrypt(txt:String = ''):String
                {
                        var data:ByteArray = Base64.decodeToByteArray(txt);
                        var pad:IPad = new PKCS5;
                        var mode:ICipher = Crypto.getCipher(type, key, pad);
                        pad.setBlockSize(mode.getBlockSize());
                        mode.decrypt(data);
                        return Hex.toString(Hex.fromArray(data));
                }
        }

}

PHP Class Example

class Crypt
{
        var $key = NULL;
        var $iv = NULL;
        var $iv_size = NULL;

        function Crypt()
        {
                $this->init();
        }

        function init($key = "")
        {
                $this->key = ($key != "") ? $key : "";

                $this->algorithm = MCRYPT_DES;
                $this->mode = MCRYPT_MODE_ECB;

                $this->iv_size = mcrypt_get_iv_size($this->algorithm, $this->mode);
                $this->iv = mcrypt_create_iv($this->iv_size, MCRYPT_RAND);
        }

        function encrypt($data)
        {
                $size = mcrypt_get_block_size($this->algorithm, $this->mode);
                $data = $this->pkcs5_pad($data, $size);
                return base64_encode(mcrypt_encrypt($this->algorithm, $this->key, $data, $this->mode, $this->iv));
        }

        function decrypt($data)
        {
                return $this->pkcs5_unpad(rtrim(mcrypt_decrypt($this->algorithm, $this->key, base64_decode($data), $this->mode, $this->iv)));
        }

        function pkcs5_pad($text, $blocksize)
        {
                $pad = $blocksize - (strlen($text) % $blocksize);
                return $text . str_repeat(chr($pad), $pad);
        }

        function pkcs5_unpad($text)
        {
                $pad = ord($text{strlen($text)-1});
                if ($pad > strlen($text)) return false;
                if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;
                return substr($text, 0, -1 * $pad);
        }
}

Usage flash

// instance of crypto class
 private var _crypto : CryptoCode;
 public var myLoader : URLLoader;

// create instance with encryption key
 _crypto = new CryptoCode("PASSWORD");

// send crypted string to php script
 var variables : URLVariables = new URLVariables();
 variables.message = _crypto.encrypt(tosend_in.text);

// create request with POST method
 var request : URLRequest = new URLRequest("http://www.lecrabe.net/wordpress/demo/crypt/scripts/testcrypto.php");
 request.method = URLRequestMethod.POST;
 request.data = variables;

 // send request
 myLoader.load(request);

Usage PHP

include_once "lib/cryptlib.php";

// init a new instance of Crypto Class
$crypto = new Crypt;

// init with the encryption key
$result = $crypto->init("PASSWORD");

// get the POST data
$messagefromflash = $_POST ["message"];

// decrypt data
$decrypted_messagefromflash = $crypto->decrypt(utf8_decode($messagefromflash));

这篇关于Flash加密PHP解密的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆