`
hacker47
  • 浏览: 340471 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

FLEX进阶-------加密解密

阅读更多
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Script>
		<![CDATA[
			import com.hacker.DataXXTEA;
			private function test():void{
				var ss:String=DataXXTEA.encrypt(strTxt.text,key.text);
				var ss2:String=DataXXTEA.decrypt(ss,key.text);
				s1.text=ss;
				s2.text=ss2;
			}
		]]>
	</mx:Script>
	<mx:Button x="276" y="151" label="TEA" height="36" width="85" click="test();"/>
	<mx:TextArea x="108" y="231" id="s1"/>
	<mx:TextArea x="354" y="231" id="s2"/>
	<mx:TextArea x="108" y="52" id="strTxt"/>
	<mx:TextArea x="354" y="52" id="key"/>
	<mx:Label x="314" y="66" text="KEY:" fontWeight="bold"/>
	<mx:Label x="56" y="66" text="StrTxt:" fontWeight="bold"/>
</mx:Application>

 

 

 

import com.hacker.DataXXTEA;

    package com.hacker{   
                          
         public class DataXXTEA{   
                    
                 public function DataXXTEA(){   
                         throw new Error("XXTEA class is static container only");   
                  }   
                    
                 private static function long2str(v:Array,w:Boolean):String {   
                          var vl:uint = v.length;   
                          var sl = v[vl - 1] & 0xffffffff;   
                         for (var i:uint = 0; i < vl; i++){   
                                  v[i] = String.fromCharCode(v[i] & 0xff,   
                                                             v[i] >>> 8 & 0xff,   
                                  v[i] >>> 16 & 0xff,   
                                  v[i] >>> 24 & 0xff);   
                          }   
                         if(w){   
                                 return v.join('').substring(0, sl);   
                          }   
                         else {   
                                 return v.join('');   
                          }   
                  }   
                    
                 private static function str2long(s:String,w:Boolean):Array {   
                          var len:uint = s.length;   
                          var v:Array = new Array();   
                         for (var i:uint = 0; i < len; i += 4){   
                                  v[i >> 2] = s.charCodeAt(i)   
                                  | s.charCodeAt(i + 1) << 8  
                                  | s.charCodeAt(i + 2) << 16  
                                  | s.charCodeAt(i + 3) << 24;   
                          }   
                         if (w) {   
                                  v[v.length] = len;   
                          }   
                         return v;   
                  }   
                    
                 public static function encrypt(char:String,key:String):String{   
                         if(char == ""){   
                                 return "";   
                          }   
                          var v:Array = str2long(StringUtil.utf16to8(char), true);   
                          var k:Array = str2long(key, false);   
                          var n:uint = v.length - 1;   
                            
                          var z:Number = v[n];   
                          var y:Number = v[0];   
                          var delta:Number = 0x9E3779B9;   
                          var mx:Number;   
                          var q:Number = Math.floor(6 + 52 / (n + 1))   
                          var sum:Number = 0;   
                         while (q-- > 0) {   
                                  sum = sum + delta & 0xffffffff;   
                                  var e:Number = sum >>> 2 & 3;   
                                 for (var p:uint = 0; p < n; p++) {   
                                          y = v[p + 1];   
                                          mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);   
                                          z = v[p] = v[p] + mx & 0xffffffff;   
                                  }   
                                  y = v[0];   
                                  mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);   
                                  z = v[n] = v[n] + mx & 0xffffffff;   
                          }   
                         return long2str(v, false);   
                  }   
                    
                 public static function decrypt(char:String,key:String):String{   
                         if (char == "") {   
                                 return "";   
                          }   
                          var v:Array = str2long(char, false);   
                          var k:Array = str2long(key, false);   
                          var n:uint = v.length - 1;   
                            
                          var z:Number = v[n - 1];   
                          var y:Number = v[0];   
                          var delta:Number = 0x9E3779B9;   
                          var mx:Number;   
                          var q:Number = Math.floor(6 + 52 / (n + 1));   
                          var sum:Number = q * delta & 0xffffffff;   
                         while (sum != 0) {   
                                  var e:Number = sum >>> 2 & 3;   
                                 for (var p:uint = n; p > 0; p--) {   
                                          z = v[p - 1];   
                                          mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);   
                                          y = v[p] = v[p] - mx & 0xffffffff;   
                                  }   
                                  z = v[n];   
                                  mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);   
                                  y = v[0] = v[0] - mx & 0xffffffff;   
                                  sum = sum - delta & 0xffffffff;   
                          }   
                            
                         return StringUtil.utf8to16(long2str(v, true));   
                  }   
          }   
 }   

 

0
2
分享到:
评论
2 楼 s6260908 2010-11-22  
楼主,报错:StringUtil未定义,啥意思呀?
1 楼 liubin1639 2009-12-20  
你姓陈吗?

相关推荐

    flex-messaging-core-4.7.3.jar

    flex-messaging-core-4.7.3.jar 最新版,下载了好长时间才下载下来,亲测可用!

    flex-php-des加密解密包

    Flex-PHP-DES 加密解密包是一款专为PHP开发者设计的工具,它实现了DES(Data Encryption Standard)加密算法,并提供了与Adobe Flex应用程序之间的数据安全交互。DES是一种广泛使用的对称加密算法,常用于保护敏感...

    Flex SVN--1.5.5版本

    Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本

    flex-messaging-core.jar

    在flex-messaging-core.jar中,包含了一些关键组件和接口,例如: 1. **MessageBroker**: 这是Flex消息传递系统的中心,它管理消息的路由,调度和处理。MessageBroker实例化并配置了各种服务,如HTTP、HTTPS、RTMP...

    Flex blazeds-spring

    Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring

    flex布局-flex-layout-master.zip

    - `flex`:是`flex-grow`, `flex-shrink`和`flex-basis`的简写形式。 - `align-self`:允许单个Flex项独立设置其在交叉轴上的对齐方式,覆盖容器的`align-items`属性。 5. **Flex容器属性**:用于控制整个Flex...

    flex-messaging系列jar包

    1. **flex-messaging-core.jar**:这是Flex Messaging框架的基础库,提供了核心的基础设施和服务。它包含AMF(Action Message Format)编解码器,用于高效地序列化和反序列化数据,以及基本的消息传递机制。AMF是一...

    flex-messaging-4.7.3最新版本的jar

    6. **Security**:Flex Messaging提供了一套安全机制,包括身份验证、授权和加密,确保数据在传输过程中的安全性。 关于4.7.3版本,尽管没有具体的更新日志,我们可以合理推测它可能包含以下改进: 1. **性能优化*...

    Forex-Flex-EA-V4.91_flexEA_海龟MT4_ea_mt4_ea源码_

    《深入解析Forex-Flex-EA-V4.91与海龟交易策略在MT4平台的应用》 在金融交易领域,自动交易系统(Expert Advisor,简称EA)的应用日益广泛,尤其是外汇市场(Forex)。本文将围绕“Forex-Flex-EA-V4.91”这一特定的...

    spring-flex-1.5.0.M2-dist.zip

    这个名为“spring-flex-1.5.0.M2-dist.zip”的压缩包,包含了Spring Flex 1.5.0.M2版本的所有必要组件,使得开发者能够快速地开发和部署基于Flex的客户端应用。 在Spring Flex 1.5.0.M2中,核心组件`spring-flex-...

    flex-iframe-1.4.6

    尽管Google Code已不再接受新的项目,但许多有价值的项目,如flex-iframe-1.4.6,仍然可以在其存档中找到。 在Flex框架中,开发者通常使用ActionScript来创建富互联网应用程序(RIA)。然而,有时需要在Flex应用...

    flex-2.6.4.tar.gz

    这个"flex-2.6.4.tar.gz"文件是Flex 2.6.4版本的源代码压缩包,遵循GNU General Public License (GPL)发布。在Linux和类Unix系统中,这种.tar.gz格式常用于存储和分发软件源代码,因为它可以高效地压缩大量文件。 ...

    flex-messaging-core

    flex-messaging-core jar包

    Sample-Flex4-TabBar

    《Flex4 TabBar组件的深度探索与应用实例》 在Adobe Flex 4中,TabBar是一种常见的用户界面组件,用于创建具有多个选项卡的应用界面,它允许用户在不同的视图或内容之间进行切换。TabBar组件是Spark组件库的一部分...

    flex------组件-----数据可视化

    在这个“flex------组件-----数据可视化”主题中,我们将探讨Flex如何帮助开发者创建交互式的数据图表和可视化效果。 Flex框架提供了一套强大的组件库,其中包括用于数据可视化的类和库。这些组件使得开发人员能够...

    flex-2.6.4.tar

    flex-2.6.4

    flex-messaging-proxy.jar

    flex-messaging-proxy.jarflex-messaging-proxy.jarflex-messaging-proxy.jarflex-messaging-proxy.jar

    FlexLayout布局-wechat-app-flexlayout-master

    - `justify-content`:定义主轴上的对齐方式,如`flex-start`(靠左)、`flex-end`(靠右)、`center`(居中)、`space-between`(两端对齐,项目之间等距)和`space-around`(每个项目两侧的间隔相等)。...

    flex-messaging-common.jar

    flex-messaging-common.jar

Global site tag (gtag.js) - Google Analytics