js模拟签名

摘要:
在openapi中,需要对参数进行签名。下面是一个使用js进行模拟的示例。在实际应用中,js无法使用,因为它会暴露密钥,而密钥仅用于内部测试。此外,md5-min.js用于哈希。

在openapi中需要对参数进行签名,这里做了一个用js来模拟的例子,在实际应用中不能用js来做,因为会暴露secretkey,这里仅用于内部测试之用,另外散列使用md5-min.js来做。

sig.js

/// <reference path="http://www.cnblogs.com/Scripts/jquery-1.6.2-vsdoc.js" />
//
/ <reference path="http://www.cnblogs.com/Scripts/json2.js" />

/*------------------------------------*\
sig
\*------------------------------------
*/

var SIG = {

run:
function (dict, secret_key) {
dict
= SIG._sort(dict);
SIG._sigData(dict, secret_key);
return dict;
},

_sort:
function (dict) {
//提取key为数组
var _keys = [];
$.each(dict,
function (k, v) {
_keys.push(k);
});
//对key数据排序
_keys.sort(function (a, b) {
return a > b;
});
//创建新字典
var _newdict = {};
$.each(_keys,
function (i, v) {
_newdict[v]
= dict[v];
});
return _newdict;
},

_sigData:
function (dict, secret_key) {

//1、key排序
//2、生成sig
//3、组合sig到json
var sigtext = SIG._getSigText(dict, secret_key);
dict[
'sig'] = sigtext;
},

_getSigText:
function (dict, secretkey) {
var html = [];
$.each(dict,
function (k, v) {
html.push(k,
'=', v);
});
html.push(secretkey);
var plaintext = (html.join(''));
var sigtext = hex_md5(plaintext);

return sigtext
}


}

post test

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>StoreToken</title>
<!--<script src="http://www.cnblogs.com/Scripts/jquery-1.6.2-vsdoc.js" type="text/javascript"></script>-->
<script src="http://www.cnblogs.com/Scripts/jquery-1.6.2.js" type="text/javascript"></script>
<script src="http://www.cnblogs.com/Scripts/json2.js" type="text/javascript"></script>
<script src="http://www.cnblogs.com/Scripts/md5-min.js" type="text/javascript"></script>
<script src="sig.js" type="text/javascript"></script>
<script type="text/javascript">

$(
function () {

var postdata = SIG.run(
{
"api_key": "11111111111111111111111111111111",
"call_id": new Date().getTime(),
"method": "push.storeToken",
"v": "1",
"token": "123"
},
'88888888888888888888888888888888');

$(
"<p />").html(JSON.stringify(postdata)).appendTo($('#msgbox'));

$.post(
"/service", postdata, function (data, textStatus) {
if (textStatus == "success") {
$(
"<p />").html(JSON.stringify(data)).appendTo($('#msgbox'));
if (data != null) {
}
else {
alert(
"调用不成功");
}
}
else {
alert(
"textStatus: " + textStatus);
}
});
});
</script>
</head>
<body>
<div id="msgbox">
</div>
</body>
</html>

  

免责声明:文章转载自《js模拟签名》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇显示时间格式安装卸载homebrew下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

在html中使用js

1.使用defer属性可以让脚本在文档完全呈现出来之后在执行,延迟脚本总是按照制定他们的顺序进行。 2.使用async属性可以表示当前脚本不必等待其他脚本,也不必阻塞文档呈现,不能保证异步顺序按照它们在页面中出现的顺序执行 3.在body里使用noscript标签,标签内内容会在不支持js的浏览器显示出来。...

大部分人都会做错的经典JS闭包面试题

大部分人都会做错的经典JS闭包面试题 目录 由工作中演变而来的面试题 JS中有几种函数 创建函数的几种方式 三个fun函数的关系是什么? 函数作用域链的问题 到底在调用哪个函数? 后话 由工作中演变而来的面试题 这是一个我工作当中的遇到的一个问题,似乎很有趣,就当做了一道题去面试,发现几乎没人能全部答对并说出原因,遂拿出来聊一聊吧。 先看题目代...

JS原型继承与类的继承

  我们先看JS类的继承 1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="UTF-8"> 6 <title>JS类的继承</title> 7 </head> 8 9 <...

JS中正则表达式所缺少的匹配模式(单行模式)

单行模式允许小数点(.)匹配包括换行符(\n)在内的任意字符(出自Regex Match Tracer). 依据<<Microsoft Windows 脚本技术>>chm文档中所言: 小数点(.)匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。 正则表达式对象模式仅有...

js中split()和join()的用法

Split()方法:把一个字符串分割成字符串数组 如上所示:把字符串a按空格分隔,得3个字符串数组。 在如: var a=”hao are you” a.split(“”); 得到[h,a,o,a,r,e,y,o,u]; Join方法: 把数组中的所有元素转换为一个字符串 如上图所示:数组fruits Join过后得到元素的字符串 再如: Fruit...

C#使用技巧之调用JS脚本方法一

有时候我们需要在C#中直接调用js方法,这是完全没问题的。当然,我们也可以把js代码转化为C#,然后在C#中执行,但是这个就得花时间了~~下面我给大家介绍下一种直接在C#中调用JS文件的方法。 0、贴个效果图 1、创建个Winform项目。 2、在From1上增加一个文本框一个按钮。 3、在解决方案中创建一个test.js文件。 test.js代码如下:...