以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教一个关于使用秘钥的sha1加密签名算法  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=161494)

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

--  作者:有点蓝
--  发布时间:2021/3/19 9:14:00
--  
有没有c#的例句?
--  作者:frankcat
--  发布时间:2021/3/19 9:14:00
--  
前边图片没有传上去
--  作者:frankcat
--  发布时间: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
--  发布时间: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编码。

--  作者:有点蓝
--  发布时间:2021/3/19 9:20:00
--  
参考:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=117662&replyID=795123&skin=1
--  作者:frankcat
--  发布时间:2021/3/19 9:41:00
--  
多谢老师,问题解决了,昨天在论坛找到这个帖子了,估计眼花了,没看到这段代码,看到最后面的sha1参考了