Foxtable(狐表)用户栏目专家坐堂 → [求助]如何生成SHA1的数据签名串


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

主题:[求助]如何生成SHA1的数据签名串

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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
[求助]如何生成SHA1的数据签名串  发帖心情 Post By:2021/2/2 8:41:00 [只看该作者]

金蝶给的例子如下:不知道如何用狐表生成signeddata

协议内容解析(演示例子中的参数协议,具体实际应用可以自定义,但基本参数不能缺少)
参数格式:ud=|dbid|username|appid|signeddata|timestamp[|lcid],其中ud为参数名;协议格式:|dbid|username|appid|signeddata|timestamp[|lcid]
dbid:数据中心的ID;username:用户名称;
appid:应用程序ID,通过Administrator登录数据中心后,在【系统管理】分类的【第三方系统登录授权】功能里面进行新增维护;
signeddata:数据签名串,通过公钥和用户数据进行运算得到,在后面有详细说明;
// signeddata公钥字符串,来自administrator管理中【第三方系统登陆授权】功能分配的加密钥匙
// 参数中secret为【第三方系统登陆授权】中自动分配的【应用密钥】
var signedData = Kingdee.BOS.Util.SHA1Util.GetSignature(
new string[] {
dbId, userName, appId, secret, timeStamp.ToString()
});
timestamp:登录时间戳(Unix时间戳,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数);
lcid(可选):语言ID,中文2052(默认),英文1033,繁体3076
.
ps: 如果使用的是其他语言,比如java等,可以参照下面算法生成数据签名串[signedData]:

以下内容为程序代码:

///


/// SHA1签名
///

///
///
public static string GetSignature(string[] arr)
{
//1. 将数组进行排序
//2. 将数组拼接成一个字符串进行sha1加密
arr = arr.OrderBy(z => z).ToArray();
var arrString = string.Join("", arr);
var sha1 = SHA1.Create();
var sha1Arr = sha1.ComputeHash(Encoding.UTF8.GetBytes(arrString));
StringBuilder enText = new StringBuilder();
foreach (var b in sha1Arr)
{
enText.AppendFormat("{0:x2}", b);
}

return enText.ToString();
}


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


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

转换为vb.net代码,补齐命名空间,放到全局代码使用:https://converter.telerik.com/

 回到顶部