[AS3]AS3基于flash做文件地址的加密和解密Des源代码范例
[AS3]AS3基于flash做文件地址的加密和解密Des源代码范例
[AS3]AS3基于flash做文件地址的加密和解密Des源代码范例
使用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;
- }
- }
- }
来源:http://blog.csdn.net/lang10217/article/details/32705667
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...