使用as3加解密的开源项目as3crypto,下载地址: http://download.csdn.net/detail/lang10217/7519497 官方下载地址: http://code.google.com/p/as3crypto/ 示例代码: package{import com.hurlant.crypto.symmetric.DESKey;import com.hurlant.crypto.symme
使用as3加解密的开源项目as3crypto,下载地址:
http://download.csdn.net/detail/lang10217/7519497
官方下载地址:
http://code.google.com/p/as3crypto/
示例代码:
package { import com.hurlant.crypto.symmetric.DESKey; import com.hurlant.crypto.symmetric.ECBMode; import com.hurlant.util.Base64; import flash.display.Sprite; import flash.utils.ByteArray; /** * Author:大飞狼 * Date: 2014-6-19 上午9:30:12 * Synopsis:des加解密测试 */ public class DesTest extends Sprite { /** * key顾名思义就是加解密用的钥匙 */ private const KEY_STR:String="123123"; public function DesTest() { var b_ba:ByteArray=encrypt(KEY_STR,"www.dafeilang.com"); //字符串形式的密文 var b_ciphertext:String=Base64.encodeByteArray(b_ba); trace("密文:",b_ciphertext); var b_ciphertext16:String=byteArrayTo16(b_ba); trace("十六进制形式密文:",b_ciphertext16); //解密后的原文 var b_originalText :String=decrypt(KEY_STR,Base64.decodeToByteArray(b_ciphertext)); trace("解密得到:",b_originalText); //解密16进制密文后的原文 var b_originalText16 :String=decrypt(KEY_STR,from16ToByteArray(b_ciphertext16)); trace("解密十六进制密文得到:",b_originalText16); } /** * 加密 * @param key 加解密用的key * @param data 被加密的字符串 * @return 加密后生成ByteArray数据 */ private function encrypt(key:String,data:String):ByteArray{ trace("执行加密方法,key:",key,",被加密的字符串:",data); //实验化key的Bytearray对象,给DESKey使用 var b_keyByteArray:ByteArray=new ByteArray(); b_keyByteArray.writeUTFBytes(key); //实例化DESKey var b_desKey:DESKey=new DESKey(b_keyByteArray); //不只是有ecb还有cbc,cfb等,有兴趣可以自己尝试 var b_ecb:ECBMode=new ECBMode(b_desKey); //把需要加密字符串转换为ByteArray var b_byteArray:ByteArray=convertStringToByteArray(data); //执行加密 b_ecb.encrypt(b_byteArray); return b_byteArray; } /** * 解密 * @param key 解密用的key * @param data 需要解密的数据 * @return 解密后的数据 */ private function decrypt(key:String,data:ByteArray):String{ trace("\n执行解密方法,key:",key,",需要解密的字符串:",data); //实验化key的Bytearray对象,给DESKey使用 var b_keyByteArray:ByteArray=new ByteArray(); b_keyByteArray.writeUTFBytes(key); //实例化DESKey var b_desKey:DESKey=new DESKey(b_keyByteArray); // var b_ecb:ECBMode=new ECBMode(b_desKey); var b_byteArray:ByteArray=new ByteArray(); b_byteArray.writeBytes(data); //执行解密 b_ecb.decrypt(b_byteArray); return convertByteArrayToString(b_byteArray); } /** * String转ByteArray * @param str * @return */ public function convertStringToByteArray(str:String):ByteArray { var bytes:ByteArray; if (str) { bytes=new ByteArray(); bytes.writeUTFBytes(str); } return bytes; } /** * ByteArray转String * @param bytes * @return */ public function convertByteArrayToString(bytes:ByteArray):String { var str:String; if (bytes) { bytes.position=0; str=bytes.readUTFBytes(bytes.length); } return str; } /** * 把ByteArray转换为16进制的形式的字符串 * @param ba * @param name * @return */ private function byteArrayTo16(ba:ByteArray):String{ ba.position=0; var b_str:String=""; while (ba.bytesAvailable > 0) { var b_s:String=ba.readUnsignedByte().toString(16); // trace("b_s:",b_s); if(b_s.length<2) b_s="0"+b_s; b_str+=b_s; } return b_str; } private function from16ToByteArray(str:String):ByteArray{ var b_ba:ByteArray=new ByteArray(); var b_arr:Array=str.split(""); var b_length:int=b_arr.length; for(var i:int=0;i<b_length-1;i+=2){ var b_char1:String=b_arr[i]; var b_char2:String=b_arr[i+1]; var b_byte:int=parseInt(b_char1+b_char2,16); // trace("b_byte:",b_byte); b_ba.writeByte(b_byte); } return b_ba; } } }
示例项目下载(flash builder 4.7):
http://download.csdn.net/detail/lang10217/7525853