JS 实现MD5加密,以及发现的JS对字符的处理、替换等
2014-03-13 16:25
573 查看
在实际开发工作中,用到接口开发,报文采用的是MD5加密方式,自己想做一个html的静态页面来实现报文的封装和加密,在这个过程中就发现了js对双引号“"”的处理不像看上去那么简单了。还有js替换字符串的方法。
js实现MD5加密:
相关js文件下载地址:http://download.csdn.net/detail/songylwq/7034729
对于这个功能首先想到的是这种实现,本身实现思路没问题,关键在于签出的MD5上,字母、数字、汉字没问题,但是报文中双引号“ " ”等就不行了,MD5就不一样了。
页面输出签名前的报文:
页面输出没问题,是一样的。
首先会想到会不会是双引号格式不同,我就将双引号全部替换成“ \" ”再签名,也不对。
在学习js替换时js的replace("","")方法只能替换第一个匹配字符,比如
输出结果为:“1nbsa”
所以这里就要用到正则表达式来替换:
输出结果为:“1nsfl1”
本来想用这个方式替换“\"”为“"”发现替换无效还是“{"id":"1","type":"province"}”
但是用“alert()”打印后发现了问题
打印输出为:“{"id":"1","type":"province"}”
问题就在这,页面显示为双引号但是js在处理时却是转义了所以签名一直不一致,问题找到了就好解决了,将字符里面的“"”替换为双引号,然后打印看看,ok了签名一样了
js实现MD5加密:
相关js文件下载地址:http://download.csdn.net/detail/songylwq/7034729
<body> <form id="formDom" action="" accept="application/json" method="post" target="_blank"> data<textarea id="taData" rows="10" cols="40" name="data">{"id":"55","type":"province"}</textarea><br/> sign<input name="sign" id="sign" value="b217c713485ca913edef6fe87f3ba3a0" size="40"/><br/> <input type="button" id="butSing" value="签 名" /> <input type="submit" id="butSubmit" value="提 交" /> </form> </body>
function signData(){ var enStr = $("#taData").text(); var hex_md5_str = hex_md5(enStr); $("#sign").val(hex_md5_str); }报文格式:
{"id":"1","type":"province"}
对于这个功能首先想到的是这种实现,本身实现思路没问题,关键在于签出的MD5上,字母、数字、汉字没问题,但是报文中双引号“ " ”等就不行了,MD5就不一样了。
页面输出签名前的报文:
<label id="enStr"></label> $("#enStr").html(enStr);
页面输出没问题,是一样的。
首先会想到会不会是双引号格式不同,我就将双引号全部替换成“ \" ”再签名,也不对。
在学习js替换时js的replace("","")方法只能替换第一个匹配字符,比如
"anbsa".replace("a","1")
输出结果为:“1nbsa”
所以这里就要用到正则表达式来替换:
"ansfla".replace(new RegExp("a","g"),"1")
输出结果为:“1nsfl1”
本来想用这个方式替换“\"”为“"”发现替换无效还是“{"id":"1","type":"province"}”
但是用“alert()”打印后发现了问题
打印输出为:“{"id":"1","type":"province"}”
问题就在这,页面显示为双引号但是js在处理时却是转义了所以签名一直不一致,问题找到了就好解决了,将字符里面的“"”替换为双引号,然后打印看看,ok了签名一样了
hex_md5(enStr.replace(new RegExp(""","g"),"\""));
相关文章推荐
- JS 实现MD5加密,以及发现的JS对字符的处理、替换等
- JS光标处理以及返回光标的下一个字符方法介绍
- 用JS实现字符处理
- js替换特殊字符及取小数点处理
- JS 字符替换处理replace/replaceAll
- JS 实现字符替换
- 剑指offer 01-06解答思路以及代码(顺序数组找特定数字,替换空格字符,链表反转输出,重建二叉树,两个栈实现队列效果,旋转数组最小元素)
- JS实现字符处理
- js替换特殊字符及取小数点处理
- js替换字符串中所有指定的字符(实现代码)
- js正则表达式把不符合条件的字符替换处理(总结)
- php处理表单中的复选框问题以及js实现全选
- js替换字符串中所有指定的字符(实现代码)
- JS实现找出字符串中出现最多的字符和次数
- C语言实现:替换字符串中指定字符
- 非常惊艳的Css3的桌面上散落的相片效果,以及单击放大图片的LightBox效果(独立Js非jQuery)的实现原理
- Js屏蔽按住键盘一直输入的问题,实现按住也只能输入一个字符
- 工作流实现多人处理以及处理方式
- makefile学习记录:空字符和""," "区别以及变量定义中多余的空格如何处理