`

Flex 中使用MD5类

    博客分类:
  • FLEX
阅读更多
/*
    *
    * MD5加密算法类
    * @author wangbaoxue
    */
    package util{
    public class MD5
    {
    private var hexcase:int = 0;
    private var strsize:int = 8;
    public function getMD5(s:String):String
    {
    return binl2hex(core_md5(str2binl(s), s.length*strsize));
    }

private function core_md5(x:Array, len:int):Array
{
x[len >> 5] = (x[len >> 5]) | (128 << len%32);
x[(((len+64) >>> 9) << 4)+14] = len;
var a:int = 1732584193;
var b:int = -271733879;
var c:int = -1732584194;
var d:int = 271733878;
var i:int = 0;
while (i<x.length)
{
var olda:int = a;
var oldb:int = b;
var oldc:int = c;
var oldd:int = d;
a = md5_ff(a, b, c, d, x[i+0], 7, -680876936);
d = md5_ff(d, a, b, c, x[i+1], 12, -389564586);
c = md5_ff(c, d, a, b, x[i+2], 17, 606105819);
b = md5_ff(b, c, d, a, x[i+3], 22, -1044525330);
a = md5_ff(a, b, c, d, x[i+4], 7, -176418897);
d = md5_ff(d, a, b, c, x[i+5], 12, 1200080426);
c = md5_ff(c, d, a, b, x[i+6], 17, -1473231341);
b = md5_ff(b, c, d, a, x[i+7], 22, -45705983);
a = md5_ff(a, b, c, d, x[i+8], 7, 1770035416);
d = md5_ff(d, a, b, c, x[i+9], 12, -1958414417);
c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
a = md5_ff(a, b, c, d, x[i+12], 7, 1804603682);
d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
a = md5_gg(a, b, c, d, x[i+1], 5, -165796510);
d = md5_gg(d, a, b, c, x[i+6], 9, -1069501632);
c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
b = md5_gg(b, c, d, a, x[i+0], 20, -373897302);
a = md5_gg(a, b, c, d, x[i+5], 5, -701558691);
d = md5_gg(d, a, b, c, x[i+10], 9, 38016083);
c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
b = md5_gg(b, c, d, a, x[i+4], 20, -405537848);
a = md5_gg(a, b, c, d, x[i+9], 5, 568446438);
d = md5_gg(d, a, b, c, x[i+14], 9, -1019803690);
c = md5_gg(c, d, a, b, x[i+3], 14, -187363961);
b = md5_gg(b, c, d, a, x[i+8], 20, 1163531501);
a = md5_gg(a, b, c, d, x[i+13], 5, -1444681467);
d = md5_gg(d, a, b, c, x[i+2], 9, -51403784);
c = md5_gg(c, d, a, b, x[i+7], 14, 1735328473);
b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
a = md5_hh(a, b, c, d, x[i+5], 4, -378558);
d = md5_hh(d, a, b, c, x[i+8], 11, -2022574463);
c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
a = md5_hh(a, b, c, d, x[i+1], 4, -1530992060);
d = md5_hh(d, a, b, c, x[i+4], 11, 1272893353);
c = md5_hh(c, d, a, b, x[i+7], 16, -155497632);
b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
a = md5_hh(a, b, c, d, x[i+13], 4, 681279174);
d = md5_hh(d, a, b, c, x[i+0], 11, -358537222);
c = md5_hh(c, d, a, b, x[i+3], 16, -722521979);
b = md5_hh(b, c, d, a, x[i+6], 23, 76029189);
a = md5_hh(a, b, c, d, x[i+9], 4, -640364487);
d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
b = md5_hh(b, c, d, a, x[i+2], 23, -995338651);
a = md5_ii(a, b, c, d, x[i+0], 6, -198630844);
d = md5_ii(d, a, b, c, x[i+7], 10, 1126891415);
c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
b = md5_ii(b, c, d, a, x[i+5], 21, -57434055);
a = md5_ii(a, b, c, d, x[i+12], 6, 1700485571);
d = md5_ii(d, a, b, c, x[i+3], 10, -1894986606);
c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
b = md5_ii(b, c, d, a, x[i+1], 21, -2054922799);
a = md5_ii(a, b, c, d, x[i+8], 6, 1873313359);
d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
c = md5_ii(c, d, a, b, x[i+6], 15, -1560198380);
b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
a = md5_ii(a, b, c, d, x[i+4], 6, -145523070);
d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
c = md5_ii(c, d, a, b, x[i+2], 15, 718787259);
b = md5_ii(b, c, d, a, x[i+9], 21, -343485551);
a = safe_add(a, olda);
b = safe_add(b, oldb);
c = safe_add(c, oldc);
d = safe_add(d, oldd);
i = i+16;
}
return new Array(a, b, c, d);
}

private function md5_cmn(q:int, a:int, b:int, x:int, s:int, t:int) :int
{
return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
}
private function md5_ff(a:int, b:int, c:int, d:int, x:int, s:int, t:int) :int
{
return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
private function md5_gg(a:int, b:int, c:int, d:int, x:int, s:int, t:int) :int
{
return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
private function md5_hh(a:int, b:int, c:int, d:int, x:int, s:int, t:int) :int
{
return md5_cmn((b ^ c) ^ d, a, b, x, s, t);
}
private function md5_ii(a:int, b:int, c:int, d:int, x:int, s:int, t:int) :int
{
return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}
private function safe_add(x:int, y:int):int
{
var lsw:int = (x & 65535)+(y & 65535);
var msw:int = ((x >> 16)+(y >> 16))+(lsw >> 16);
return (msw << 16) | (lsw & 65535);
}
private function bit_rol(num:int, cnt:int) :int
{
return (num << cnt) | (num >>> (32-cnt));
}
private function str2binl(str:String) :Array
{
var bin:Array = new Array();
var mask:int = (1 << strsize)-1;
var i:int = 0;
while (i<(str.length*strsize))
{
bin[i >> 5] = (bin[i >> 5]) | ((str.charCodeAt(i/strsize) & mask) << i%32);
i = i+strsize;
}
return bin;
}
private function binl2hex(binarray:Array):String
{
var hex_tab:String = "0123456789abcdef";
var str:String = "";
var i:int = 0;
while (i<(binarray.length*4))
{
str = str+(hex_tab.charAt(((binarray[i >> 2]) >> ((i%4*8)+4)) & 15)+hex_tab.charAt(((binarray[i >> 2]) >> (i%4*8)) & 15));
i++;
}
return str;
}
}
    }

调用示例:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" paddingBottom="0"
paddingLeft="0" paddingRight="0" paddingTop="0" modalTransparencyBlur="0" modalTransparencyColor="#9a9a9a"
>
<mx:Script>
    <![CDATA[
            import util.MD5;
            private function getMD5():void  {
var md5:MD5=new MD5();          
lblMD5.text=md5.getMD5(txt.text);
            }
    
      ]]>
    </mx:Script>


<mx:Canvas styleName="CavasStyle" width="100%" height="100%">
<mx:VBox paddingLeft="10">

<mx:Label id="lbl" text="请输入:"/>
<mx:TextInput id="txt" width="200" />
<mx:Button id="btn" label="得到MD5" click="getMD5()" />
<mx:Label id="lblMD5" width="300" />
</mx:VBox>
</mx:Canvas>
</mx:Application>
分享到:
评论

相关推荐

    Flex多文件上传+md5验证文件是否上传

    标题“Flex多文件上传+md5验证文件是否上传”揭示了该技术的核心要点:使用Flex来处理多个文件的上传,并通过MD5哈希校验确保上传的文件与原始文件一致,防止数据篡改。 1. **多文件上传**:在Flex中,可以利用...

    Flex 获取文件MD5值

    Flex 获取文件MD5值插件,调用格式为: var md5:String=by.blooddy.crypto.MD5.hashBytes(file.data);

    Flex3获得文件Hash值MD5值完整工程源码

    在Flex3中,我们可能需要获取文件的哈希值,比如MD5哈希值,以验证文件的完整性和未被篡改。MD5(Message-Digest Algorithm 5)是一种广泛使用的加密散列函数,产生一个128位(16字节)的散列值,通常以32个十六进制...

    flex.md flex属性详解文档

    flex原理和全属性详解flex 是 flexible Box的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为flex布局

    flexMD5官方加密包

    在这个压缩包中,`as3corelib.swc`是一个编译后的SWC库文件,它是ActionScript项目的二进制库,可以直接导入到Flex项目中使用。开发者可以将此库添加到Flex Builder或Flash Professional的库路径中,以便在项目中...

    MD5官方类库(包含swc和源代码)

    使用MD5官方类库的方法非常简单,只需要调用MD5类中的hash()函数。这个函数接受一个字符串作为参数,返回的是该字符串的MD5哈希值。例如,如果你有一个字符串`password123`,你可以这样使用: ```javascript var md...

    03-flex布局.md

    03-flex布局

    CryptoDemo--Flex(AS 3.0)加密算法工具

    在Flex中,`flash.crypto.MD5`类可以帮助我们计算MD5摘要。 在CryptoDemo中,你可以找到如何使用这些加密算法的实例代码,这对于学习和理解加密过程非常有帮助。例如,你可以看到如何创建密钥、初始化向量,以及...

    flex-2.5.39.tar.gz

    至于"54412a97c41f41c3a2aaa5d32b38515e",这看起来像是一个哈希值,可能是文件的MD5或SHA校验和。它的目的是验证下载的文件是否完整无误,与原始源保持一致。用户可以通过计算下载文件的哈希值并与提供的值进行比较...

    基于S32KDS平台SDK3.0编写的flexcan组件DMA例程

    5. **DMA传输控制**:通过编程启动和停止DMA传输,可能涉及到同步FlexCAN和DMA的操作,以确保数据的完整性和一致性。 6. **错误管理**:在CAN通信中,错误检测和处理至关重要。程序应包含对错误帧、位错误、超时等...

    弹性布局-flex布局.zip

    在`移动web开发_flex布局.md`文件中,可能包含了具体的代码示例,包括HTML结构和CSS样式,演示了如何应用Flex布局创建各种移动Web界面。`images`目录下的图片可能用于辅助说明布局效果,而`2-案例`可能包含更多复杂...

    UploadPlugIn上传控件

    可以使用URLLoader类和URLRequest类来构造HTTP请求,将MD5值作为额外的参数添加到请求头或者请求体中。 5. 服务器端校验:服务器接收到文件后,同样计算一次文件的MD5值,并与客户端发送的MD5值进行比较,确认无误...

    Flex 布局教程:语法篇.md

    Flex 布局教程:语法篇.md

    Flexy是使用Flex实现的最小CSS框架

    2. **响应式设计**:Flexy支持移动优先的响应式设计,通过添加断点类(如`.xs`, `.sm`, `.md`, `.lg`, `.xl`)可以轻松调整不同屏幕尺寸下的布局。 3. **兼容性**:Flexy考虑到了浏览器兼容性,使用了适当的前缀来...

    Grid Item Flex Error(解决方案).md

    Grid Item Flex Error(解决方案).md

    flex弹性布局 - 副本.md

    flex弹性布局 - 副本

    Flex air sqlite操作实例

    以上三个类都在:DB包中,其中还包括:MD5.as Util.as等工具类 Desktop_app.mxml是主界面文件, 在其中有一个失误,数据表中学员ID写成了:Stude在n_id 少了字母t 程序能正常运行. 使用:Flash Builder 4.5 构建 在...

    Flex里播放Gif图片

    3. 定义MXML标记:为了让Flex编译器能够识别并使用这个组件,需要在MXML中定义一个组件标记。 4. 使用组件:在Flex界面布局中,通过MXML或AS3代码实例化并添加这个Gif播放器组件。 接下来,`md.gif`文件很可能是...

    移动web 第四天flex布局、实战演练小兔仙

    在实战演练中,我们将学习如何使用Flex布局模型快速开发网页,并掌握Flex布局的基本概念和应用。 通过实战演练,我们将学习如何: * 使用flex-direction改变元素排列方向 * 使用flex-wrap实现弹性盒子多行排列效果...

Global site tag (gtag.js) - Google Analytics