Foxtable(狐表)用户栏目专家坐堂 → 请教一个关于使用秘钥的sha1加密签名算法


  共有3309人关注过本帖树形打印复制链接

主题:请教一个关于使用秘钥的sha1加密签名算法

帅哥哟,离线,有人找我吗?
frankcat
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:52 积分:448 威望:0 精华:0 注册:2019/8/7 20:12:00
请教一个关于使用秘钥的sha1加密签名算法  发帖心情 Post By:2021/3/19 9:13:00 [只看该作者]

和我们的一个系统api对接,对字符串进行sha1加密的时候,看php的例句应该是加上“SecretKey”一起算的,但是翻了下论坛和帮助Web.FormsAuthentication.HashPasswordForStoringInConfigFile(signature, "SHA1"),这个语句好像不能带key的参数,麻烦老师看些这个该怎么写
[此贴子已经被作者于2021/3/19 9:13:13编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109505 积分:557193 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/19 9:14:00 [只看该作者]

有没有c#的例句?

 回到顶部
帅哥哟,离线,有人找我吗?
frankcat
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:52 积分:448 威望:0 精华:0 注册:2019/8/7 20:12:00
  发帖心情 Post By:2021/3/19 9:14:00 [只看该作者]

前边图片没有传上去

 回到顶部
帅哥哟,离线,有人找我吗?
frankcat
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:52 积分:448 威望:0 精华:0 注册:2019/8/7 20:12:00
  发帖心情 Post By:2021/3/19 9:15:00 [只看该作者]

C# 签名示例



string ID  = 'Your SecretID',
       type= 'list',
       postData="{\"key\":\"value1\",\"key2\":[\"a\",\"b\"],\"key3\":{\"_key1\":\"_value1\"}}";
        private string GetQM(string appid, string SecretKey, string ctype, string PostData)
        {
            string ID = appid,
           type = ctype,
           postData = PostData;
            string plainText = ID + type + postData;
            HMACSHA1 hmac = new HMACSHA1();
            hmac.Key = Encoding.UTF8.GetBytes(SecretKey);
            byte[] dataBuffer = Encoding.UTF8.GetBytes(plainText);
            byte[] hashBytes = hmac.ComputeHash(dataBuffer);
            string sign = Convert.ToBase64String(hashBytes).ToUpper();
            return sign;
        }
string sign = Convert.ToBase64String(hashBytes).ToUpper();

 回到顶部
帅哥哟,离线,有人找我吗?
frankcat
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:52 积分:448 威望:0 精华:0 注册:2019/8/7 20:12:00
  发帖心情 Post By:2021/3/19 9:15:00 [只看该作者]

签名算法

签名所需信息

需要管理员登录系统,在系统设置->API设置 生成 SecretKey 和 SecretID。

拼接签名串

接口只支持post请求,将标准Postdata转成字符串
    PostData标准
    { 
        key:"value1",          //字符
        key2:["a","b"],        //数组
        key3:{_key1:"_value1"} //对象
    }
    PostData字符串:{"key":"value1","key2":["a","b"],"key3":{"_key1":"_value1"}}
        
签名字符串(param):You AppID + RequestType + PostData字符串

签名参数说明:

字段解释参数值
appidYou AppID(系统设置->API设置查看)必填(url传递)
type请求类型,view视图数据、list_simple列表数据、save编辑保存、del删除必填(url传递)
keyYou SecretID(系统设置->API设置生成)必填(url传递)

生成签名

1.对签名字符串使用HMAC-SHA1算法进行加密。
2.将得到的sign,在进行Base64编码后转成大写得到最终的sign。
3.将sign进行URLEncode编码。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109505 积分:557193 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/19 9:20:00 [只看该作者]

参考:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=117662&replyID=795123&skin=1

 回到顶部
帅哥哟,离线,有人找我吗?
frankcat
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:52 积分:448 威望:0 精华:0 注册:2019/8/7 20:12:00
  发帖心情 Post By:2021/3/19 9:41:00 [只看该作者]

多谢老师,问题解决了,昨天在论坛找到这个帖子了,估计眼花了,没看到这段代码,看到最后面的sha1参考了

 回到顶部