flex-php--des加密解密通用代码

包文件下载地址:http://download.csdn.net/detail/jiguoguo/7033045

导入com包后 代码如下  key 和iv必须8位。多了后两边就不同了

protected function phpToAs3Encode(plain:String):String
				{
					import com.hurlant.crypto.hash.HMAC;
					import com.hurlant.crypto.hash.IHash;
					import com.hurlant.crypto.hash.MD2;
					import com.hurlant.crypto.hash.MD5;
					import com.hurlant.crypto.hash.SHA1;
					import com.hurlant.crypto.hash.SHA224;
					import com.hurlant.crypto.hash.SHA256;
					import com.hurlant.crypto.prng.ARC4;
					import com.hurlant.crypto.rsa.RSAKey;
					import com.hurlant.crypto.symmetric.AESKey;
					import com.hurlant.crypto.symmetric.BlowFishKey;
					import com.hurlant.crypto.symmetric.CBCMode;
					import com.hurlant.crypto.symmetric.CFB8Mode;
					import com.hurlant.crypto.symmetric.CFBMode;
					import com.hurlant.crypto.symmetric.CTRMode;
					import com.hurlant.crypto.symmetric.DESKey;
					import com.hurlant.crypto.symmetric.ECBMode;
					import com.hurlant.crypto.symmetric.ICipher;
					import com.hurlant.crypto.symmetric.IMode;
					import com.hurlant.crypto.symmetric.IPad;
					import com.hurlant.crypto.symmetric.ISymmetricKey;
					import com.hurlant.crypto.symmetric.IVMode;
					import com.hurlant.crypto.symmetric.NullPad;
					import com.hurlant.crypto.symmetric.OFBMode;
					import com.hurlant.crypto.symmetric.PKCS5;
					import com.hurlant.crypto.symmetric.SimpleIVMode;
					import com.hurlant.crypto.symmetric.TripleDESKey;
					import com.hurlant.crypto.symmetric.XTeaKey;
					import com.hurlant.util.Base64;
					
					import flash.utils.ByteArray;
					var iv2:String = '12345678'; //key和 iv                        可以自己定义不同的
					var key2:String = '12345678';
					var key:ByteArray = new ByteArray();                        
					key.writeUTFBytes(key2);
					var  iv:ByteArray= new ByteArray();
					iv.writeUTFBytes(iv2);
					var des:DESKey = new DESKey(key);                        
					var cbc:CBCMode = new CBCMode(des); //加密模式                        ,有多种模式供你选择
					cbc.IV = iv; //设置加密的IV
					/* 得到的密文长度和明文的长度有关,规律大致是:明文<8 密文=12 ,明文<16 密文=24 ,明文>=16 密文=32......后面希望你们推一下*/
					//var plain:String = "123456789"; //明文
					var tmpByteArray:ByteArray = convertStringToByteArray(plain); //转换成二进制编码 (该函数自己定义)
					cbc.encrypt(tmpByteArray);                         //利用加密模式对数据进行加密
					var as3Str:String = Base64.encodeByteArray(tmpByteArray); //利用base64对密文进行编码
					return as3Str;
					//trace("as3Str = "+as3Str);//输出结果 为: PXWVqYv/gJ04WpM5vlT9gg==
					

				}
				public function convertStringToByteArray(str:String):ByteArray
				{
					var bytes:ByteArray;
					if (str)
					{
						bytes=new ByteArray();
						bytes.writeUTFBytes(str);
					}
					return bytes;
				}


下面是php代码

 

$key='12345678';
		$iv="12345678";
		$encrypt='123456789'; //被加密的字符串 PXWVqYv/gJ04WpM5vlT9gg==
		
		$tb=mcrypt_module_open(MCRYPT_3DES,'','cbc',''); //创建加密环境,要AES就把MCRYPT_3DES替换成"rijndael-128"  128/8 = 16 字节 表示IV的长度
		
		mcrypt_generic_init($tb,$key,$iv); //初始化加密算法
		$encrypt=$this->PaddingPKCS7($encrypt);
		$cipher=mcrypt_generic($tb,$encrypt); //执行加密
		$cipher=base64_encode($cipher);
		mcrypt_generic_deinit($tb);
		mcrypt_module_close($tb);
		
		
		echo $encrypt.' DES 加密后= '.$cipher.'<br>';
		
		echo " 密文长度 = ".strlen($cipher);
		
		//解密
		$tb=mcrypt_module_open(MCRYPT_3DES,'','cbc','');
		mcrypt_generic_init($tb,$key,$iv);
		$cipher=base64_decode($cipher);
		$pain=mdecrypt_generic($tb,$cipher);
		mcrypt_generic_deinit($tb);
		mcrypt_module_close($tb);
		
		echo base64_encode($cipher).'解密后 11= '.$pain.'<br>';


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值