`
ch_kexin
  • 浏览: 909436 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

FlashMD5加密

 
阅读更多

/**
 * @function :MD5
 *
 * @author :Makenna
 *
 * @date : 2014-4-10
 */

package com.xba.game.common
{
    public class Md5Util{
        public function Md5Util(){}
        public static var hexcase:Number = 0;
        public static var b64pad:String = "";
        public static var chrsz:Number = 8;
       
        public static function calculate(s:*):*{ return hex_md5(s); };
      public static function hex_hmac_md5(key:*, data:*):*{ return binl2hex(core_hmac_md5(key, data)); }
        public static function b64_hmac_md5(key:*, data:*):*{ return binl2b64(core_hmac_md5(key, data)); }
        public static function str_hmac_md5(key:*, data:*):*{ return binl2str(core_hmac_md5(key, data)); }
       
        private static function hex_md5(s:*):*{ return binl2hex(core_md5(str2binl(s), s.length*chrsz)); }
        private static function b64_md5(s:*):*{ return binl2b64(core_md5(str2binl(s), s.length*chrsz)); }
        private static function str_md5(s:*):*{ return binl2str(core_md5(str2binl(s), s.length*chrsz)); }
        private static function core_md5(x:*,len:*):* {
            x[len >> 5] |= 0x80 << ((len)%32); x[(((len+64) >>> 9) << 4)+14] = len;
            var a:* = 1732584193; var b:* = -271733879; var c:* = -1732584194; var d:* = 271733878;
            for (var i:* = 0; i<x.length; i += 16) {
                var olda:* = a; var oldb:* = b; var oldc:* = c; var oldd:* = 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);
            } return new Array(a, b, c, d);
        }
        private static function md5_cmn(q:*,a:*,b:*,x:*,s:*,t:*):*{ return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b); }
        private static function md5_ff(a:*,b:*,c:*,d:*,x:*,s:*,t:*):*{ return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); }
        private static function md5_gg(a:*,b:*,c:*,d:*,x:*,s:*,t:*):*{ return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); }
        private static function md5_hh(a:*,b:*,c:*,d:*,x:*,s:*,t:*):*{ return md5_cmn(b ^ c ^ d, a, b, x, s, t); }
        private static function md5_ii(a:*,b:*,c:*,d:*,x:*,s:*,t:*):*{ return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); }
        private static function bit_rol(num:*,cnt:*):*{ return (num << cnt) | (num >>> (32-cnt)); }
        private static function safe_add(x:*,y:*):*{
            var lsw:* = (x & 0xFFFF)+(y & 0xFFFF);
            var msw:* = (x >> 16)+(y >> 16)+(lsw >> 16);
            return (msw << 16) | (lsw & 0xFFFF);
        }
        private static function str2binl(str:*):*{
            var bin:Array = new Array();
            var mask:* = (1 << chrsz)-1;
            for (var i:int = 0; i<str.length*chrsz; i += chrsz) bin[i >> 5] |= (str.charCodeAt(i/chrsz) & mask) << (i%32);
            return bin;
        }
        private static function binl2hex(binarray:*):*{
            var hex_tab:String = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
            var str:String = "";
            for (var i:int = 0; i<binarray.length*4; i++) {
                str += hex_tab.charAt((binarray[i >> 2] >> ((i%4)*8+4)) & 0xF)+hex_tab.charAt((binarray[i >> 2] >> ((i%4)*8)) & 0xF);
            } return str;
        }
        private static function core_hmac_md5(key:*,data:*):*{
            var bkey:* = str2binl(key);
            if (bkey.length>16) bkey = core_md5(bkey, key.length*chrsz);
            var ipad:* = new Array(16)
            var opad:* = new Array(16);
            for (var i:int = 0; i<16; i++) {
                ipad = bkey ^ 0x36363636;
                opad = bkey ^ 0x5C5C5C5C;
            }
            var hash:* = core_md5(ipad.concat(str2binl(data)), 512+data.length*chrsz);
            return core_md5(opad.concat(hash), 512+128);
        }
        private static function binl2str(bin:*):*{
            var str:String = "";
            var mask:* = (1 << chrsz)-1;
            for (var i:int = 0; i<bin.length*32; i += chrsz) str += String.fromCharCode((bin[i >> 5] >>> (i%32)) & mask);
            return str;
        }
   
        private static function binl2b64(binarray:*):*{
            var tab:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
            var str:String = "";
            for (var i:int = 0; i<binarray.length*4; i += 3) {
                var triplet:* = (((binarray[i >> 2] >> 8*(i%4)) & 0xFF) << 16) | (((binarray[i+1 >> 2] >> 8*((i+1)%4)) & 0xFF) << 8) | ((binarray[i+2 >> 2] >> 8*((i+2)%4)) & 0xFF);
                for (var j:int = 0; j<4; j++) {
                    if (i*8+j*6>binarray.length*32) str += b64pad;
                    else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
                }
            }return str;
        }
    }
}

分享到:
评论

相关推荐

    jsp网页中用户登陆密码的MD5加密

    MD5加密广泛应用于各种领域,包括数据存储、网络传输和身份验证等。 在jsp网页中实现MD5加密可以使用JavaBean来实现。MD5类实现了RSA Data Security公司的MD5 message-digest算法。该类中定义了一些静态final变量,...

    Excel的MD5加密的2种实现方式

    在Excel中,我们可以利用两种方法对字段进行MD5加密:VBA(Visual Basic for Applications)函数和宏。以下将详细介绍这两种方法。 首先,我们来看VBA函数的实现。VBA是Excel内置的编程环境,允许用户自定义函数和...

    C#MD5加密--加盐MD5加密C#MD5加密C#MD5加密

    输入需要加密的字符串,有两种加密方式,普通md5加密和加盐MD5加密。根据需要生成。

    windows下MD5加密工具bat文件

    本主题提供的“windows下MD5加密工具bat文件”是一个基于批处理脚本(.bat)的解决方案,允许用户在没有额外安装软件的情况下进行MD5加密操作。 批处理文件(.bat)是Windows操作系统中的一个特殊文本文件,它可以...

    MD5加密算法的VB6.0类模块实例.doc

    MD5加密算法的VB6.0类模块实例 MD5加密算法是目前广泛使用的一种加密算法,主要用于数据完整性和身份验证。VB6.0是微软公司开发的一种编程语言,广泛应用于Windows操作系统的开发中。该类模块实例将MD5加密算法与VB...

    批量MD5加密工具

    批量MD5加密工具,如"苏苏MD5批量加密工具.exe",是为了方便用户处理大量文件的MD5计算而设计的。这样的工具通常具有以下功能: 1. **多文件处理**:一次可以处理多个文件,节省了逐个手动计算的时间。 2. **快速...

    C#md5加密对应Java-md5加密

    C# MD5加密类型支持:1-16位的加密;2-32位加密;3:base64加密对应JAVA md5 16位的加密;2-32位加密;3:base64加密

    javaMD5加密 MD5加密

    javaMD5加密 MD5加密javaMD5加密 MD5加密javaMD5加密 MD5加密javaMD5加密 MD5加密javaMD5加密 MD5加密javaMD5加密 MD5加密javaMD5加密 MD5加密javaMD5加密 MD5加密javaMD5加密 MD5加密javaMD5加密 MD5加密javaMD5...

    java Md5加密方法 java Md5加密方法 java Md5加密方法

    java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密...

    Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法

    Kettle中使用JavaScript调用jar包对文件内容进行MD5加密.本文主要知识点: JavaScript调用jar包对文件内容进行MD5加密,返回加密md5值 Kettle实现对文件内容的加密,返回加密md5值 2.使用方法 1)下载jar包 ...

    前端实现MD5对密码进行加密

    附:如果遇到MD5加密文件,而又不知道的密码的,请在数据库中换上这组加密的数据。 admin---16位加密---7a57a5a743894a0e admin---32位加密---21232f297a57a5a743894a0e4a801fc3 admin---40位加密---7a57a5a743894...

    jquery实现MD5加密

    在前端开发中,有时候为了增强数据安全性,可能需要在客户端对敏感信息进行MD5加密。jQuery是一个流行的JavaScript库,虽然它主要用于DOM操作和事件处理,但通过扩展,我们可以在jQuery环境下实现MD5加密。 首先,...

    java Md5加密方法 java Md5加密方法

    java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法...

    MD5加密文件

    用于处理密码加密,加密格式为MD5,提供的为工具类,里面包含多个静态方法 如md5(String)

    qt5AES加密,ES加密/解密算法是一种可逆的对称加密算法,这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推

    标题和描述中提到的“qt5AES加密”是指使用Qt5框架实现的AES(Advanced Encryption Standard)加密技术。AES是一种广泛使用的对称加密算法,以其高效和安全性著称。"ES加密/解密算法"可能是描述错误,通常指的是AES...

    随机生成36位MD5加密字符

    但是,题目中提到的"36位MD5加密字符"可能是指将32位的MD5值转换为特定格式,例如每8位用一个分隔符分隔,或者使用非十六进制字符来表示。在Java中,我们可以使用`java.security.MessageDigest`类来计算MD5哈希。 ...

    android用MD5加密解密demo

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,用于产生一个固定长度的摘要,通常用于数据的加密和验证完整性。本Demo主要展示了如何在Android平台上进行MD5加密和解密操作。 MD5并不是一种加密算法...

    iOS MD5加密(常规、32位大小写、16位大小写等)

    MD5各种加密。 番外:对文本+key进行md5 code32加密 再进行base64代码 /** 该方法是对文本+key进行md5 code32加密 再进行base64 @return 加密后的text */ - (NSString *)getSecretKeyWithString:(NSString *)...

    Excel使用的Md5加密宏与使用范例

    5. **扩展应用**:除了基本的加密,MD5还可以用于比较文件的完整性,例如,下载大文件后,可以通过计算本地文件和服务器上文件的MD5值来验证文件是否完整无误。 6. **学习资源**:学习VBA和MD5宏编写,可以参考在线...

    wps,excel电子表格md5批量加密工具宏工具下载

    标题中的“wps,excel电子表格md5批量加密工具宏工具下载”暗示了这是一个用于对WPS Office和Microsoft Excel电子表格进行MD5批量加密的工具,且该工具可能集成了宏,以自动化处理大量文件的加密过程。MD5是一种广泛...

Global site tag (gtag.js) - Google Analytics