`
sanshizi
  • 浏览: 86080 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

javascript 各种编码转换, md5编码

阅读更多
var hexcase=0;var b64pad="";var chrsz=8;
function hex_md5(s){return binl2hex(core_md5(str2binl(s),s.length*chrsz))}
function b64_md5(s){return binl2b64(core_md5(str2binl(s),s.length*chrsz))}
function str_md5(s){return binl2str(core_md5(str2binl(s),s.length*chrsz))}
function hex_hmac_md5(key,data){return binl2hex(core_hmac_md5(key,data))}
function b64_hmac_md5(key,data){return binl2b64(core_hmac_md5(key,data))}
function str_hmac_md5(key,data){return binl2str(core_hmac_md5(key,data))}
function md5_vm_test(){return hex_md5("abc")=="900150983cd24fb0d6963f7d28e17f72"}
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 Array(a,b,c,d)}
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)}
function md5_ff(a,b,c,d,x,s,t){return md5_cmn((b&c)|((~b)&d),a,b,x,s,t)}
function md5_gg(a,b,c,d,x,s,t){return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t)}
function md5_hh(a,b,c,d,x,s,t){return md5_cmn(b^c^d,a,b,x,s,t)}
function md5_ii(a,b,c,d,x,s,t){return md5_cmn(c^(b|(~d)),a,b,x,s,t)}
function core_hmac_md5(key,data){var bkey=str2binl(key);if(bkey.length>16)bkey=core_md5(bkey,key.length*chrsz);var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++){ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C}var hash=core_md5(ipad.concat(str2binl(data)),512+data.length*chrsz);return core_md5(opad.concat(hash),512+128)}
function safe_add(x,y){var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF)}
function bit_rol(num,cnt){return(num<<cnt)|(num>>>(32-cnt))}
function str2binl(str){var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(i%32);return bin}
function binl2str(bin){var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz)str+=String.fromCharCode((bin[i>>5]>>>(i%32))&mask);return str}
function binl2hex(binarray){var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=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}
function binl2b64(binarray){var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";for(var i=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=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}

 

分享到:
评论

相关推荐

    MD5编码、MD5加密解密demo

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的输入数据转换成固定长度的128位(16字节)摘要信息,通常表现为32位的十六进制数字。这个过程被称为MD5编码或MD5散列。在信息安全...

    分享JavaScript与Java中MD5使用两个例子

    标题《分享JavaScript与Java中MD5使用两个例子》中的知识点涉及了如何在JavaScript和Java语言中使用MD5加密算法,以及如何将字符串转换为MD5格式。MD5是一种广泛使用的密码散列函数,它可以产生一个128位的散列值...

    asp和javascript的md5加密函数(测试过两个值相同)

    为了确保在ASP和JavaScript中生成的MD5值一致,你需要确保输入到这两个环境的字符串是完全一样的,并且正确地处理了字符编码。在实际应用中,通常会将用户输入的密码或其他敏感信息进行MD5加密,然后存储其哈希值,...

    一个md5加密的javascript

    4. **编码处理**:MD5函数可能考虑到了字符串的编码问题,如自动处理Unicode字符的编码转换。 5. **API扩展**:除了基本的MD5计算,库可能还提供了其他相关的辅助方法,比如文件读取并计算MD5,或者与其他加密算法...

    JavaScript的MD5包

    JavaScript中的MD5是一种广泛使用的哈希函数,全称为Message-Digest Algorithm 5,它能够将任意长度的输入(也叫做预映射pre-image)转换为一个固定长度的输出,这个输出通常是一个128位的二进制数,通常用32个十六...

    javascript md5加密包

    这个文件可能包含了MD5加密和Base64转换的函数,使得开发者能够在JavaScript环境中方便地对数据进行这两种操作。 MD5加密函数可能包含以下几个步骤: 1. 分块:将输入的数据按照64位的块进行分割。 2. 初始化:设置...

    MD5加密函数(JavaScript实现)

    MD5加密函数(JavaScript实现),一个JS文件,在调用处包含,直接使用其函数,MD5主要的加密方法,JS实现的。JS文件格式是UTF-8编码的,如果想弄成GB2312或其它,可使用编码转换工具转换一下即可。

    把字符转换成md5代码

    以下是一些关于如何在不同的编程语言中进行字符转换为MD5编码的关键点: 1. **Python**: Python提供了`hashlib`库,可以方便地进行MD5转换。例如: ```python import hashlib def char_to_md5(char): m = ...

    密码机器各种编码转换与解密

    此工具可能包含了对称加密(如AES、DES)、非对称加密(RSA、ECC)、哈希函数(MD5、SHA系列)、消息认证码(MAC)、伪随机数生成器(PRNG)以及各种密码算法的变种。在CTF中,解密任务通常涉及找出密文的正确加密...

    JavaScript 使用技巧.md

    `,可以启用严格模式,这有助于捕获潜在的编码错误和不良编程习惯。 **示例代码:** ```javascript "use strict"; let a = "foo"; a = null; // TypeError: Cannot assign to read only property 'a' of undefined...

    MD5Encode签名加密文件

    `MD5Encode.js`文件很可能是实现MD5编码和签名功能的JavaScript代码库,其中可能包含了MD5哈希计算、编码转换以及可能的加密签名过程。在使用这样的库时,开发者需要按照文档或示例代码来调用相应的函数,传入正确的...

    JavaScript基础笔记.md

    JavaScript在进行运算时会自动进行类型转换: - **字符串转数字**:按照字面值转换;非数字字符则转为`NaN`。 - **布尔值转数字**:`true`转为1,`false`转为0。 #### 六、流程控制语句 - **条件语句**:`if......

    数据加密MD5(包括javascript代码和java代码实现的两种方式)

    接着,对输入字符串进行编码,计算其MD5摘要,最后将二进制结果转换为十六进制字符串。 需要注意的是,由于MD5的安全性问题,尽管它在某些场景下仍然可用,但在涉及敏感数据时,如用户密码,应避免使用MD5。更安全...

    JS_MD5示例

    在JavaScript中,我们可以使用各种库来实现MD5的加密。 标题"JS_MD5示例"表明我们将探讨如何在JavaScript中应用MD5算法。通常,开发人员会用JS进行客户端的计算,比如密码的预处理,这样可以减轻服务器的压力,并...

    JS的MD5包,可以实现多种方式的加密

    如果需要处理二进制数据,如在Node.js环境中,可以先将二进制数据转换为字符串,然后再进行MD5计算。 总的来说,`jshash-2.2`提供了一种便捷的方式来在JavaScript中实现MD5加密,无论是在前端还是后端开发中,都能...

    js_hex_md5.rar_hex md5_hex_m_hex_md5_hex_md5.js_js hex_md5

    综上所述,这个资源提供了一种在JavaScript环境中实现MD5哈希计算的方法,特别是对于用户输入信息的16进制编码处理。它可以帮助开发人员创建安全的表单提交,防止数据篡改,并且由于其默认的32位16进制表示,可以...

    js版本的md5加密实现 转

    在JavaScript中实现MD5,我们需要处理一系列的位操作、循环和转换,这通常是复杂的。一个常见的MD5库是`crypto-js`,但这里我们只关注`md5.js`这个文件,它可能包含了一个轻量级的MD5实现。 MD5算法主要分为四个...

    md5 JS 版本

    - **`b64_hmac_md5(key, data)`**:同样计算HMAC-MD5,但返回的是Base64编码格式的结果。 - **`calcMD5(s)`**:与`hex_md5(s)`相同,为了向后兼容而保留。 ##### 3. 内部工作原理 - **字符串转换**:将输入字符串...

    md5数据加密实例

    CryptoJS是一个开源的JavaScript库,提供了各种加密算法,如MD5、SHA-1、AES等。这个库非常适用于前端开发,可以在浏览器环境中进行数据的加密操作,而无需服务器端的支持。 以下是如何使用CryptoJS库进行MD5加密的...

    各种加密所需js MD5 esc 等等

    在标题和描述中提到的"各种加密所需js MD5 esc 等等",涉及到的是JavaScript(js)中的几种常见加密算法,包括MD5(Message-Digest Algorithm 5)、ESCAPE(字符串转义)以及可能误写的Base64编码。下面我们将详细...

Global site tag (gtag.js) - Google Analytics