javascript 的MD5代码备份,跟java互通

2023-11-15

var MD5 = function (string) { 
        
         function RotateLeft(lValue, iShiftBits) { 
             return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits)); 
        
        
         function AddUnsigned(lX,lY) { 
             var lX4,lY4,lX8,lY8,lResult; 
             lX8 = (lX & 0x80000000); 
             lY8 = (lY & 0x80000000); 
             lX4 = (lX & 0x40000000); 
             lY4 = (lY & 0x40000000); 
             lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF); 
             if (lX4 & lY4) { 
                 return (lResult ^ 0x80000000 ^ lX8 ^ lY8); 
            
             if (lX4 | lY4) { 
                 if (lResult & 0x40000000) { 
                     return (lResult ^ 0xC0000000 ^ lX8 ^ lY8); 
                 } else
                     return (lResult ^ 0x40000000 ^ lX8 ^ lY8); 
                
             } else
                 return (lResult ^ lX8 ^ lY8); 
            
        
        
         function F(x,y,z) { return (x & y) | ((~x) & z); } 
         function G(x,y,z) { return (x & z) | (y & (~z)); } 
         function H(x,y,z) { return (x ^ y ^ z); } 
         function I(x,y,z) { return (y ^ (x | (~z))); } 
        
         function FF(a,b,c,d,x,s,ac) { 
             a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac)); 
             return AddUnsigned(RotateLeft(a, s), b); 
         }; 
        
         function GG(a,b,c,d,x,s,ac) { 
             a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac)); 
             return AddUnsigned(RotateLeft(a, s), b); 
         }; 
        
         function HH(a,b,c,d,x,s,ac) { 
             a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac)); 
             return AddUnsigned(RotateLeft(a, s), b); 
         }; 
        
         function II(a,b,c,d,x,s,ac) { 
             a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac)); 
             return AddUnsigned(RotateLeft(a, s), b); 
         }; 
        
         function ConvertToWordArray(string) { 
             var lWordCount; 
             var lMessageLength = string.length; 
             var lNumberOfWords_temp1=lMessageLength + 8; 
             var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64; 
             var lNumberOfWords = (lNumberOfWords_temp2+1)*16; 
             var lWordArray=Array(lNumberOfWords-1); 
             var lBytePosition = 0; 
             var lByteCount = 0; 
             while ( lByteCount < lMessageLength ) { 
                 lWordCount = (lByteCount-(lByteCount % 4))/4; 
                 lBytePosition = (lByteCount % 4)*8; 
                 lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition)); 
                 lByteCount++; 
            
             lWordCount = (lByteCount-(lByteCount % 4))/4; 
             lBytePosition = (lByteCount % 4)*8; 
             lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition); 
             lWordArray[lNumberOfWords-2] = lMessageLength<<3; 
             lWordArray[lNumberOfWords-1] = lMessageLength>>>29; 
             return lWordArray; 
         }; 
        
         function WordToHex(lValue) { 
             var WordToHexValue= "" ,WordToHexValue_temp= "" ,lByte,lCount; 
             for (lCount = 0;lCount<=3;lCount++) { 
                 lByte = (lValue>>>(lCount*8)) & 255; 
                 WordToHexValue_temp = "0" + lByte.toString(16); 
                 WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2); 
            
             return WordToHexValue; 
         }; 
        
         function Utf8Encode(string) { 
             string = string.replace(/\r\n/g, "\n" ); 
             var utftext = ""
        
             for ( var n = 0; n < string.length; n++) { 
        
                 var c = string.charCodeAt(n); 
        
                 if (c < 128) { 
                     utftext += String.fromCharCode(c); 
                
                 else if ((c > 127) && (c < 2048)) { 
                     utftext += String.fromCharCode((c >> 6) | 192); 
                     utftext += String.fromCharCode((c & 63) | 128); 
                
                 else
                     utftext += String.fromCharCode((c >> 12) | 224); 
                     utftext += String.fromCharCode(((c >> 6) & 63) | 128); 
                     utftext += String.fromCharCode((c & 63) | 128); 
                
        
            
        
             return utftext; 
         }; 
        
         var x=Array(); 
         var k,AA,BB,CC,DD,a,b,c,d; 
         var S11=7, S12=12, S13=17, S14=22; 
         var S21=5, S22=9 , S23=14, S24=20; 
         var S31=4, S32=11, S33=16, S34=23; 
         var S41=6, S42=10, S43=15, S44=21; 
        
         string = Utf8Encode(string); 
        
         x = ConvertToWordArray(string); 
        
         a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; 
        
         for (k=0;k<x.length;k+=16) { 
             AA=a; BB=b; CC=c; DD=d; 
             a=FF(a,b,c,d,x[k+0], S11,0xD76AA478); 
             d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756); 
             c=FF(c,d,a,b,x[k+2], S13,0x242070DB); 
             b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE); 
             a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF); 
             d=FF(d,a,b,c,x[k+5], S12,0x4787C62A); 
             c=FF(c,d,a,b,x[k+6], S13,0xA8304613); 
             b=FF(b,c,d,a,x[k+7], S14,0xFD469501); 
             a=FF(a,b,c,d,x[k+8], S11,0x698098D8); 
             d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF); 
             c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1); 
             b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE); 
             a=FF(a,b,c,d,x[k+12],S11,0x6B901122); 
             d=FF(d,a,b,c,x[k+13],S12,0xFD987193); 
             c=FF(c,d,a,b,x[k+14],S13,0xA679438E); 
             b=FF(b,c,d,a,x[k+15],S14,0x49B40821); 
             a=GG(a,b,c,d,x[k+1], S21,0xF61E2562); 
             d=GG(d,a,b,c,x[k+6], S22,0xC040B340); 
             c=GG(c,d,a,b,x[k+11],S23,0x265E5A51); 
             b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA); 
             a=GG(a,b,c,d,x[k+5], S21,0xD62F105D); 
             d=GG(d,a,b,c,x[k+10],S22,0x2441453); 
             c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681); 
             b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8); 
             a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6); 
             d=GG(d,a,b,c,x[k+14],S22,0xC33707D6); 
             c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87); 
             b=GG(b,c,d,a,x[k+8], S24,0x455A14ED); 
             a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905); 
             d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8); 
             c=GG(c,d,a,b,x[k+7], S23,0x676F02D9); 
             b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A); 
             a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942); 
             d=HH(d,a,b,c,x[k+8], S32,0x8771F681); 
             c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122); 
             b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C); 
             a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44); 
             d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9); 
             c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60); 
             b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70); 
             a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6); 
             d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA); 
             c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085); 
             b=HH(b,c,d,a,x[k+6], S34,0x4881D05); 
             a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039); 
             d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5); 
             c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8); 
             b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665); 
             a=II(a,b,c,d,x[k+0], S41,0xF4292244); 
             d=II(d,a,b,c,x[k+7], S42,0x432AFF97); 
             c=II(c,d,a,b,x[k+14],S43,0xAB9423A7); 
             b=II(b,c,d,a,x[k+5], S44,0xFC93A039); 
             a=II(a,b,c,d,x[k+12],S41,0x655B59C3); 
             d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92); 
             c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D); 
             b=II(b,c,d,a,x[k+1], S44,0x85845DD1); 
             a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F); 
             d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0); 
             c=II(c,d,a,b,x[k+6], S43,0xA3014314); 
             b=II(b,c,d,a,x[k+13],S44,0x4E0811A1); 
             a=II(a,b,c,d,x[k+4], S41,0xF7537E82); 
             d=II(d,a,b,c,x[k+11],S42,0xBD3AF235); 
             c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB); 
             b=II(b,c,d,a,x[k+9], S44,0xEB86D391); 
             a=AddUnsigned(a,AA); 
             b=AddUnsigned(b,BB); 
             c=AddUnsigned(c,CC); 
             d=AddUnsigned(d,DD); 
        
        
         var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d); 
        
         return temp.toLowerCase(); 
     }

转载于:https://www.cnblogs.com/telwanggs/p/5306107.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript 的MD5代码备份,跟java互通 的相关文章

  • 在java中是否可以使用反射创建没有无参数构造函数的“空白”类实例?

    我有一个没有默认构造函数的类 我需要一种方法来获取此类的 空白 实例 空白 意味着实例化后所有类字段都应具有默认值 如 null 0 等 我问这个问题是因为我需要能够序列化 反序列化大对象树 而且我无法访问该对象类的源 并且类既没有默认构造
  • 我们必须将 .class 文件放在 Tomcat 目录中的位置

    我必须把我的 class文件在 Tomcat 目录中 在我的 Java Complete Reference 书中 他们告诉将其放入C Program Files Apache Tomcat 4 0 webapps examples WEB
  • 如何使用Javascript获取ASP.NEt Web Forms标签的值?

    我有以下标签控件
  • 什么是{| ... |} 在 JavaScript 中是什么意思? [复制]

    这个问题在这里已经有答案了 通读 javascript 代码库 我遇到了如下代码块 export type RouteReducerProps error Error isResolving boolean isResolved boole
  • 在 Java 中使用 Inflater 解压缩 gzip 数据

    我正在尝试使用以下方法解压缩 gzip 数据Inflater 根据文档 如果参数 nowrap 为 true 则 ZLIB 标头和校验和 字段将不会被使用 这提供了与 GZIP 和 PKZIP 使用的压缩格式 注意 使用 nowrap 选项
  • 验证动态添加的输入字段

    我用过this http docs jquery com Plugins Validation以下表单的 jquery 验证插件
  • 使用 Java 通过 HTTP 下载未知长度的文件

    我想用java下载一个HTTP查询 但是我下载的文件在下载时有一个未确定的长度 我认为这将是相当标准的 所以我搜索并找到了它的代码片段 http snipplr com view 33805 http snipplr com view 33
  • 删除数组中所有对象的属性

    我想删除bad数组中每个对象的属性 有没有比使用更好的方法for循环并从每个对象中删除它 var array bad something good something bad something good something for var
  • 在Vue.js 3中添加全局变量

    如何在 Vue js 3 中添加全局变量 在 Vue js 2 中 我们在main js file Vue prototype myGlobalVariable globalVariable 最直接的替换就是app config globa
  • 我可以关闭并重新打开套接字吗?

    我学习了一个使用套接字的例子 在此示例中 客户端向服务器发送请求以打开套接字 然后服务器 侦听特定端口 打开套接字 一切都很好 套接字从双方 客户端和服务器 打开 但我仍然不清楚这个东西有多灵活 例如 客户端是否可以关闭一个打开的 从两端
  • Java .split("|") 不工作

    我刚刚遇到了一个问题分割法 http docs oracle com javase 6 docs api java lang String html split 28java lang String 29for 字符串不适用于字符 作为一个
  • javascript 函数后面括号中的值

    我正在尝试重新利用我在 SO 的答案中找到的一些 Javascript 代码 但我想首先更好地理解它的语法 其大纲是 function root ns factory some code window detectZoom function
  • 将变量从 jenkins 传递到 testng.xml

    我想根据从詹金斯传递的变量运行测试用例 例如 选择您要运行的测试用例 测试用例一 测试用例二 在 pom xml maven 中
  • 如何应对 WebStorm 中大量未解决的变量警告?

    我有一个从服务器获取数据的函数 function getData data console log data someVar 网络风暴说someVar是一个未解决的变量 我怎样才能摆脱这样的警告 我看到几个选项 禁止 IDE 设置中的警告
  • Apache HttpClient TCP Keep-Alive(套接字保持活动)

    我的 http 请求需要太多时间才能被服务器处理 大约 5 分钟 由于连接闲置 5 分钟 代理服务器将关闭连接 我正在尝试在 Apache DefaultHttpClient 中使用 TCP Keep Alive 来使连接长时间处于活动状态
  • Apache Kafka 是否提供异步订阅回调 API?

    我的项目正在将 Apache Kafka 视为老化的基于 JMS 的消息传递方法的潜在替代品 为了让这个过渡尽可能的顺利 如果替代的排队系统 Kafka 有一个异步订阅机制那就更理想了 类似于我们当前项目使用的JMS机制MessageLis
  • 如何修改生成的SOAP请求?

    我正处于创建输出拦截器并从 SOAP 消息中获取 OuputStream 的阶段 但是 如何在将 SOAP 信封发送到端点之前对其进行修改呢 我想删除一些 xml 元素 一种方法是获取文档并通过 XSLT 转换运行它 您可以通过调用来获取拦
  • 带有延迟的 jQuery 切换类只能运行一次

    当涉及到 jQuery 匿名函数和延迟时 我显然错过了一些基本的东西 下面的代码每次页面加载只能运行一次 它将添加该类 然后在 1 秒后将其删除 如果我再次单击 它将添加该类 但在页面持续时间内永远不会删除该类 除非我重新加载页面 var
  • Chrome + 另一个进程:进程间通信比 HTTP/XHR 请求更快?

    我有一个进程 1 对视频流进行实时图像处理 我需要在 Chrome 中的 HTML 页面中渲染该视频 同一台计算机上的进程 2 在canvas or img or videoHTML5 元素 由于我有 1000x1000 像素 x 3 字节
  • 通过均匀分布值来有效合并两个数组

    我见过许多问题 答案主题是通过交替值合并两个数组 他们是这样工作的 let array1 a b c d let array2 1 2 let outcome a 1 b 2 c d 但我希望输出更加高效 并且根据数组大小均匀分配值 exp

随机推荐

  • 全景分割(Panoptic Segmentation)(CVPR 2019)

    全景分割 Panoptic Segmentation CVPR 2019 摘要 1 导言 2 相关工作 3 全景分割格式 4 全景分割度量 4 1 片段匹配 4 2 PQ计算 4 3 与现有度量的比较 5 全景分割数据集 6 人类一致性研究
  • PAL 和NTSC说明?

    PAL 720 576 25HZ NTSC 720 480 30HZ 576i是一种视频格式的缩写 字母 i 表示 隔行扫描 数字576表示水平方向有576条 扫描线 通常通常垂直分辨率为720或者704像素 换句话说 标准画质电视 SDT
  • STM32学习笔记:CAN总线的过滤器

    STM32 CAN控制器 提供了28个可配置的筛选器组 F1仅互联型才有28个 其他的只有14个 STM32 CAN控制器每个筛选器组由2个32位寄存器组成 CAN FxR1和CAN FxR2 x 0 27 根据位宽不同 每个筛选器组可提供
  • 使用cBioPortal查看TCGA肿瘤数据

    欢迎关注 生信修炼手册 cBioPortal整合了来自TCGA CCLE以及几个独立的大型肿瘤研究项目的数据 构建了一个易于使用的网站 不需要有深厚的计算机功底 也可以通过该网站查询 分析 可视化肿瘤的相关结果 针对该网站的使用 官方专门发
  • leetcode 322. Coin Change硬币交换问题

    题目详细 描述 You are given coins of different denominations and a total amount of money amount Write a function to compute th
  • 美国国家安全局(NSA)网络攻击主战武器NOPEN

    国家计算机病毒应急处理中心14日正式发布了美国国家安全局专用 NOPEN 远控木马分析报告 揭露了美国情治部门的网络间谍手段 国家计算机病毒应急处理中心 信息安全摘要 近日 国家计算机病毒应急处理中心对名为 NOPEN 的木马工具进行了攻击
  • 排序算法--冒泡排序

    冒泡排序 基本思想 实例演示 代码实现 基础实现 代码优化 基本思想 基本思想 冒泡排序 类似于水中冒泡 较大的数沉下去 较小的数慢慢冒起来 假设从小到大 即为较大的数慢慢往后排 较小的数慢慢往前排 直观表达 每一趟遍历 将一个最大的数移到
  • 雅可比(jacobi)迭代法 matlab实现

    clc clear n input 请输入矩阵阶数 n for i 1 n fprintf 请输入矩阵第 d行 n i A i input end A B 1 input 请输入B向量 n B for i 1 n x i 0 x2 i 0
  • 动态规划之完全背包问题

    完全背包问题 题目 有 N N N 种物品和一个容量为 V V V 的背包 每种物品都有无限件可用 放入第 i
  • javascript 的MD5代码备份,跟java互通

    var MD5 function string function RotateLeft lValue iShiftBits return lValue lt
  • mybatis 批量增加 Parameter '__frch_item_0' not found. Available parameters are [list]

    当在mybatis用到foreach的时候 会报这个错误Parameter frch item 0 not found Available parameters are list 会出现的几种解决方案 例子 sql view plain c
  • 【Linux操作系统】【综合实验二 vi应用与shell脚本编辑】【浅试编辑命令】

    文章目录 一 实验目的 二 实验要求 三 实验内容 1 继续练习Linux系统的文件类 目录类 进程管理类与磁盘操作类常用命令 并使用常见的选择项 2 了解ed ex行编辑器与Emacs全屏幕编辑器的工作模式 基本操作命令 3 掌握vi的编
  • 静态测试

    之前对 静态测试 一直不怎么理解 一直徘徊在为什么要进行静态测试 看了下面这几篇文章 突然觉得的柳暗花明了 目前我正在测试的项目xx让我烦心的问题终于找到出路了 http qa taobao com p 8017 http qa taoba
  • 资产收集的方法总结

    资产收集的方法总结 文章目录 资产收集的方法总结 前言 一 资产收集基本名词概念 二 相关收集方法 1 fofa 2 google搜索语法 3 logo 4 favicon ico 5 关键字 6 维基百科 7 天眼查 企查查 8 微信公众
  • 设计模式之UML类图该怎么画

    关于可维护 可复用 可扩展 灵活性好的理解 生活中 印刷术和活字印刷 当需要对某些内容修改时 印刷术只要有一丁点变化 就需要重头再来 而活字印刷只需要进行部分修改即可 可维护 只更改要更改的内容 可复用 之前的内容并非用完就无用 后面仍可使
  • Caused by: java.lang.NoClassDefFoundError: javax/tools/ToolProvider

    解决方案 在pom文件中的scala maven plugin插件下面加入一个参数 pom xml配置如下
  • python + selenium实现自动登录操作(以淘宝为例)

    selenium操作不熟练的可以查看一下这篇文章 selenium操作大全 一 登录前准备操作 定位一下相对应html位置 输入一般为input标签 登录按钮一般为button 输入账号密码那块 定位代码 driver find eleme
  • 电脑主板跳线_电脑基础进阶必学知识,详解电脑主板跳线!

    在DIY装机时新手总会有不同的问题 虽然目前网上流传着各种版本的教学文章或者视频 但是细致的小技巧讲解还是有限 不少网友在装机的时候虽然大致明白各个硬件的组合 但是在跳线的环节可以难住了不少的人 也挡住了不少小白用户前进的脚步 确实机箱内部
  • 强化学习算法 DDPG 解决 CartPole 问题,代码逐条详解

    本文内容源自百度强化学习 7 日入门课程学习整理 感谢百度 PARL 团队李科浇老师的课程讲解 使用DDPG解决连续控制版本的CartPole问题 给小车一个力 连续量 使得车上的摆杆倒立起来 文章目录 一 安装依赖 二 导入依赖 三 设置
  • 微信小程序中实现车牌输入功能

    一 成品展示与介绍 在点击输入框的时候会弹出车牌输入键盘 二 相关思路解析 首先车牌号码由31位汉字 26位字母 10位数字组成的 开头第一位由省份简称的汉字 第二位字母根据省份下的城市或地区区分 最后的五位或者六位 是有字母和数字组成的