登陆文档说明
| 请求参数 |
| 参数名 |
备注 |
参数类型 |
说明 |
是否必填 |
| 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 |
是 |
.net(c#)示例
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();
.net(c#)示例2 (utf-8,不用排序)
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();
Java示例
//导入以下包
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();
}
Java示例2 (utf-8,不用排序)
//导入以下包
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示例
# 示例使用的为 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)