jsMd5加密

< input id = test value = blueidea >
< input type = button value = md5 onclick = " alert(hex_md5(test.value)) " >

< script >
var  hexcase  =   0 ;   /*  hex output format. 0 - lowercase; 1 - uppercase         */
var  b64pad   =   "" /*  base-64 pad character. "=" for strict RFC compliance    */
var  chrsz    =   8 ;   /*  bits per input character. 8 - ASCII; 16 - Unicode       */

/*
 * These are the functions you'll usually want to call
 * They take string arguments and return either hex or base-64 encoded strings
 
*/
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  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)); }

/*  Backwards compatibility - same as hex_md5()  */
function  calcMD5(s){  return  binl2hex(core_md5(str2binl(s), s.length  *  chrsz));}

/*  
 * Perform a simple self-test to see if the VM is working 
 
*/
function  md5_vm_test()
{
  
return  hex_md5( " abc " ==   " 900150983cd24fb0d6963f7d28e17f72 " ;
}

/*
 * Calculate the MD5 of an array of little-endian words, and a bit length
 
*/
function  core_md5(x, len)
{
  
/*  append padding  */
  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, x[i +   1 ],  12 - 389564586 );
    c 
=  md5_ff(c, x[i +   2 ],  17 ,   606105819 );
    b 
=  md5_ff(b, x[i +   3 ],  22 - 1044525330 );
    a 
=  md5_ff(a, x[i +   4 ],  - 176418897 );
    d 
=  md5_ff(d, x[i +   5 ],   1200080426 );
    c 
=  md5_ff(c, x[i +   6 ],  - 1473231341 );
    b 
=  md5_ff(b, x[i +   7 ],  - 45705983 );
    a 
=  md5_ff(a, x[i +   8 ],   1770035416 );
    d 
=  md5_ff(d, x[i +   9 ],  - 1958414417 );
    c 
=  md5_ff(c, x[i + 10 ],  - 42063 );
    b 
=  md5_ff(b, x[i + 11 ],  - 1990404162 );
    a 
=  md5_ff(a, x[i + 12 ],   1804603682 );
    d 
=  md5_ff(d, x[i + 13 ],  - 40341101 );
    c 
=  md5_ff(c, x[i + 14 ],  - 1502002290 );
    b 
=  md5_ff(b, x[i + 15 ],   1236535329 );

    a 
=  md5_gg(a,  5  ,  - 165796510 );
    d 
=  md5_gg(d,  9  ,  - 1069501632 );
    c 
=  md5_gg(c,  14 ,   643717713 );
    b 
=  md5_gg(b,  20 - 373897302 );
    a 
=  md5_gg(a,  - 701558691 );
    d 
=  md5_gg(d,   38016083 );
    c 
=  md5_gg(c,  - 660478335 );
    b 
=  md5_gg(b,  - 405537848 );
    a 
=  md5_gg(a,   568446438 );
    d 
=  md5_gg(d,  - 1019803690 );
    c 
=  md5_gg(c,  - 187363961 );
    b 
=  md5_gg(b,   1163531501 );
    a 
=  md5_gg(a,  - 1444681467 );
    d 
=  md5_gg(d,  - 51403784 );
    c 
=  md5_gg(c,   1735328473 );
    b 
=  md5_gg(b,  - 1926607734 );

    a 
=  md5_hh(a,  4  ,  - 378558 );
    d 
=  md5_hh(d,  11 - 2022574463 );
    c 
=  md5_hh(c,  16 ,   1839030562 );
    b 
=  md5_hh(b,  23 - 35309556 );
    a 
=  md5_hh(a,  - 1530992060 );
    d 
=  md5_hh(d,   1272893353 );
    c 
=  md5_hh(c,  - 155497632 );
    b 
=  md5_hh(b,  - 1094730640 );
    a 
=  md5_hh(a,   681279174 );
    d 
=  md5_hh(d,  - 358537222 );
    c 
=  md5_hh(c,  - 722521979 );
    b 
=  md5_hh(b,   76029189 );
    a 
=  md5_hh(a,  - 640364487 );
    d 
=  md5_hh(d,  - 421815835 );
    c 
=  md5_hh(c,   530742520 );
    b 
=  md5_hh(b,  - 995338651 );

    a 
=  md5_ii(a,  6  ,  - 198630844 );
    d 
=  md5_ii(d,  10 ,   1126891415 );
    c 
=  md5_ii(c,  15 - 1416354905 );
    b 
=  md5_ii(b,  21 - 57434055 );
    a 
=  md5_ii(a,   1700485571 );
    d 
=  md5_ii(d,  - 1894986606 );
    c 
=  md5_ii(c,  - 1051523 );
    b 
=  md5_ii(b,  - 2054922799 );
    a 
=  md5_ii(a,   1873313359 );
    d 
=  md5_ii(d,  - 30611744 );
    c 
=  md5_ii(c,  - 1560198380 );
    b 
=  md5_ii(b,   1309151649 );
    a 
=  md5_ii(a,  - 145523070 );
    d 
=  md5_ii(d,  - 1120210379 );
    c 
=  md5_ii(c,   718787259 );
    b 
=  md5_ii(b,  - 343485551 );

    a 
=  safe_add(a, olda);
    b 
=  safe_add(b, oldb);
    c 
=  safe_add(c, oldc);
    d 
=  safe_add(d, oldd);
  }
  
return  Array(a, d);
  
}

/*
 * These functions implement the four basic operations the algorithm uses.
 
*/
function  md5_cmn(q, x, s, t)
{
  
return  safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
}
function  md5_ff(a, t)
{
  
return  md5_cmn((b  &  c)  |  (( ~ b)  &  d), t);
}
function  md5_gg(a, t)
{
  
return  md5_cmn((b  &  d)  |  (c  &  ( ~ d)), t);
}
function  md5_hh(a, t)
{
  
return  md5_cmn(b  ^  c  ^  d, t);
}
function  md5_ii(a, t)
{
  
return  md5_cmn(c  ^  (b  |  ( ~ d)), t);
}

/*
 * Calculate the HMAC-MD5, of a key and some data
 
*/
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 );
}

/*
 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
 * to work around bugs in some JS interpreters.
 
*/
function  safe_add(x, y)
{
  
var  lsw  =  (x  &   0xFFFF +  (y  &   0xFFFF );
  
var  msw  =  (x  >>   16 +  (y  >>   16 +  (lsw  >>   16 );
  
return  (msw  <<   16 |  (lsw  &   0xFFFF );
}

/*
 * Bitwise rotate a 32-bit number to the left.
 
*/
function  bit_rol(num, cnt)
{
  
return  (num  <<  cnt)  |  (num  >>>  ( 32   -  cnt));
}

/*
 * Convert a string to an array of little-endian words
 * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
 
*/
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;
}

/*
 * Convert an array of little-endian words to a hex string.
 
*/
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;
}

/*
 * Convert an array of little-endian words to a base-64 string
 
*/
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;
}
</ script >
 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple 最新软件的错误和性能问题。
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只有5%的概率会遇到选择运营商界面且部分必须连接到iTunes才可以激活
一般在接外包的时候, 通常第三方需要安装你的app进行测试(这时候你的app肯定是还没传到app store之前)。
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应用变灰了。那么接下来我们看一下Flutter是如何实现的。Flutter中实现整个App变为灰色在Flutter中实现整个App变为灰色是非常简单的,只需要在最外层的控件上包裹ColorFiltered,用法如下:ColorFiltered(颜色过滤器)看名字就知道是增加颜色滤镜效果的,ColorFiltered( colorFilter:ColorFilter.mode(Colors.grey, BlendMode.
flutter升级/版本切换
(1)在C++11标准时,open函数的文件路径可以传char指针也可以传string指针,而在C++98标准,open函数的文件路径只能传char指针;(2)open函数的第二个参数是打开文件的模式,从函数定义可以看出,如果调用open函数时省略mode模式参数,则默认按照可读可写(ios_base:in | ios_base::out)的方式打开;(3)打开文件时的mode的模式是从内存的角度来定义的,比如:in表示可读,就是从文件读数据往内存读写;out表示可写,就是把内存数据写到文件中;
文章目录方法一:分别将图片和文字置灰UIImage转成灰度图UIColor转成灰度颜色方法二:给App整体添加灰色滤镜参考App页面置灰,本质是将彩色图像转换为灰度图像,本文提供两种方法实现,一种是App整体置灰,一种是单个页面置灰,可结合具体的业务场景使用。方法一:分别将图片和文字置灰一般情况下,App页面的颜色深度是24bit,也就是RGB各8bit;如果算上Alpha通道的话就是32bit,RGBA(或者ARGB)各8bit。灰度图像的颜色深度是8bit,这8bit表示的颜色不是彩色,而是256
领导让调研下黑(灰)白化实现方案,自己调研了两天,根据网上资料,做下记录只是学习过程中的记录,还是写作者牛逼
让学前端不再害怕英语单词(二),通过本文,可以对css,js和es6的单词进行了在逻辑上和联想上的记忆,让初学者更快的上手前端代码
用Python送你一颗跳动的爱心
在uni-app项目中实现人脸识别,既使用uni-app中的live-pusher开启摄像头,创建直播推流。通过快照截取和压缩图片,以base64格式发往后端。
商户APP调用微信提供的SDK调用微信支付模块,商户APP会跳转到微信中完成支付,支付完后跳回到商户APP内,最后展示支付结果。CSDN前端领域优质创作者,资深前端开发工程师,专注前端开发,在CSDN总结工作中遇到的问题或者问题解决方法以及对新技术的分享,欢迎咨询交流,共同学习。),验证通过打开选择支付方式弹窗页面,选择微信支付或者支付宝支付;4.可取消支付,放弃支付会返回会员页面,页面提示支付取消;2.判断支付方式,如果是1,则是微信支付方式。1.判断是否在微信内支付,需要在微信外支付。
Mac命令行修改ipa并重新签名打包
首先在 iOS 设备中打开开发者模式。位于:设置 - 隐私&安全 - 开发者模式(需重启)
一 现象导入MBProgressHUD显示信息时,出现如下异常现象Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_MBProgressHUD", referenced from: objc-class-ref in ViewController.old: symbol(s) not found for architecture x86_64clang: error: linker command failed wit
Profiles >> 加号添加 >> Distribution >> "App Store" >> 选择 2.1 创建的App ID >> 选择绑定 2.3 的发布证书(.cer)>> 输入描述文件名称 >> Generate 生成描述文件 >> Download。Certificates >> 加号添加 >> "App Store and Ad Hoc" >> “Choose File...” >> 选择上一步生成的证书请求文件 >> Continue >> Download。
今天有需求,要实现的功能大致如下:在安卓和ios端实现分享功能可以分享链接,图片,文字,视频,文件,等欢迎大佬多多来给萌新指正,欢迎大家来共同探讨。如果各位看官觉得文章有点点帮助,跪求各位给点个“一键三连”,谢啦~声明:本博文章若非特殊注明皆为原创原文链接。