请求参数 | ||||
---|---|---|---|---|
参数名 | 备注 | 参数类型 | 说明 | 是否必填 |
password | 加密签名 | String | companyId,realName,staffCode,timeStamp,signkey(加密密钥),按这些参数的数值升序排序后,拼接到一个字符串,然后再进行sha1加密后得到 | 是 |
staffCode | 员工编号(userName,staffCode其中一个必填) | String | 客户系统的员工ID | 否 |
timeStamp | 时间戳 | String | 当前时间(yyyyMMddHHmmssffff),例如:20161210102239901 | 是 |
realName | 真实姓名 | String | 使用工号登录时,必须传入; 作用是美亚系统不存在对应工号时用于创建新旅客账号 | 否 |
passwordType | 密码方式 | String | 0- 员工工号单点登录 | 是 |
companyId | 公司编号 | String | 美亚系统的公司ID | 是 |
var staffCode = "123456"; var timeStamp = DateTime.Now.ToString("yyyyMMddHHmmssffff"); var companyId = "s123456"; var signkey = "4f3f29eb05ee4cda81528647e91608d4"; var realName = "张三"; //排序 string[] infos = new string[] { companyId, staffCode, realName, timeStamp, signkey }; Array.Sort(infos); //拼接 var input = string.Join("", infos); StringBuilder sb = new StringBuilder(); //加密 byte[] bytes = Encoding.ASCII.GetBytes(input); SHA1 sha1 = new SHA1CryptoServiceProvider(); byte[] result = sha1.ComputeHash(bytes); foreach (byte b in result) sb.AppendFormat("{0:x2}", b); //加密结果 var password = sb.ToString();
var staffCode = "123456"; var timeStamp = DateTime.Now.ToString("yyyyMMddHHmmssffff"); var companyId = "s123456"; var signkey = "4f3f29eb05ee4cda81528647e91608d4"; var realName = "张三"; //拼接顺序 companyId, staffCode, realName, timeStamp, key string[] infos = new string[] { companyId, staffCode, realName, timeStamp, signkey }; //拼接 var input = string.Join("", infos); StringBuilder sb = new StringBuilder(); //加密 byte[] bytes = Encoding.UTF8.GetBytes(input); SHA1 sha1 = new SHA1CryptoServiceProvider(); byte[] result = sha1.ComputeHash(bytes); foreach (byte b in result) sb.AppendFormat("{0:x2}", b); //加密结果 var password = sb.ToString();
//导入以下包 import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSSS");//如果加SSSS报错,或换成4位随机数 String staffCode = "123456"; String timeStamp = sdf.format(new Date()); String companyId = "s123456"; String signkey = "4f3f29eb05ee4cda81528647e91608d4"; String realName = "张三"; //排序 String[] infos = {companyId, realName, staffCode, timeStamp, signkey}; Arrays.sort(infos, String.CASE_INSENSITIVE_ORDER); //拼接 String input = String.format("%s%s%s%s%s", infos); String password = ""; //开始加密 char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; try { MessageDigest mdTemp = MessageDigest.getInstance("SHA1"); mdTemp.update(input.getBytes("ISO-8859-1")); byte[] md = mdTemp.digest(); int j = md.length; char[] buf = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; buf[k++] = hexDigits[byte0 >>> 4 & 0xf]; buf[k++] = hexDigits[byte0 & 0xf]; } //加密结果 password = new String(buf); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
//导入以下包 import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSSS");//如果加SSSS报错,或换成4位随机数 String staffCode = "123456"; String timeStamp = sdf.format(new Date()); String companyId = "s123456"; String signkey = "4f3f29eb05ee4cda81528647e91608d4"; String realName = "张三"; //拼接顺序 companyId, staffCode, realName, timeStamp, signkey String[] infos = {companyId, staffCode,realName, timeStamp, signkey}; //拼接 String input = String.format("%s%s%s%s%s", infos); String password = ""; //开始加密 char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; try { MessageDigest mdTemp = MessageDigest.getInstance("SHA1"); mdTemp.update(input.getBytes("utf-8")); byte[] md = mdTemp.digest(); int j = md.length; char[] buf = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; buf[k++] = hexDigits[byte0 >>> 4 & 0xf]; buf[k++] = hexDigits[byte0 & 0xf]; } //加密结果 password = new String(buf); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
# 示例使用的为 python 3.6 # 导入以下包 import sys import datetime import hashlib company_id = "" # 美亚提供的 公司编号 staff_code = "" # 员工工号 real_name = "" # 员工姓名 time_stamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f') sign_key="" # 美亚提供的 key arrs = [company_id, staff_code, real_name, time_stamp, sign_key] # 排序 arrs.sort(key = str.lower) data = ''.join(arrs) # 开始加密 sha = hashlib.sha1() data = data.encode("utf-8") sha.update(data) # 加密结果 password= sha.hexdigest() print(password)