using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; using Lskj.IPersonnelConnection; namespace Lskj.IPersonnelConnection { public static class PersonnelReplaceHelper { /// /// i人事 许可信息 /// private static readonly string _iPersonnelAllowInformation = "{iPersonnelAllowInformation}"; /// /// i人事 客户唯一身份标识 /// private static readonly string _iPersonnelCustomerId = "{iPersonnelCustomerId}"; /// /// i人事 私钥 /// private static readonly string _iPersonnelPrivateKey = "{iPersonnelPrivateKey}"; /// /// i人事 加密的签名信息 /// private static readonly string _iPersonnelEncryptedMessage = "{iPersonnelEncryptedMessage}"; /// /// 说明:替换i人事接口中的参数 /// 创建人: /// 创建日期:2023-04-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// url地址 /// 许可信息 /// 客户标识 /// 私钥 /// 登录人电话 /// System.String. public static string UrlEncryption(string Url, string iPersonnelAllowInformation, string iPersonnelCustomerId, string iPersonnelPrivateKey, string UserLinkPhone) { if (Url.Contains("{iPersonnelAllowInformation}") || Url.Contains("{iPersonnelEncryptedMessage}")) { //替换许可 Url = Url.Replace(_iPersonnelAllowInformation, iPersonnelAllowInformation); //替换加密的签名信息 TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1); long time = (long)ts.TotalMilliseconds;//当前时间的时间戳 string EncryptedMessage = string.Format("company_id={0}&mobile_no={1}×tamp={2}", iPersonnelCustomerId, UserLinkPhone, time); string value = EncryptByPrivateKey.encryptByPrivateKey(EncryptedMessage, iPersonnelPrivateKey); Url = Url.Replace(_iPersonnelEncryptedMessage, value); } return Url; } /// /// CDSBLims加密 /// /// /// /// public static string CDSBLimsUrlEncryption(string Url, string LoginNo, string CDSBLimsPrivateKey) { if (Url.Contains("{CDSBLimsLoginNo}")) { var aes = Aes.Create(); aes.Key = Encoding.UTF8.GetBytes(CDSBLimsPrivateKey); aes.GenerateIV(); var encryptor = aes.CreateEncryptor(aes.Key, aes.IV); var ms = new MemoryStream(); ms.Write(aes.IV, 0, aes.IV.Length); using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) using (var sw = new StreamWriter(cs, Encoding.UTF8)) { sw.Write(LoginNo); } //替换许可 Url = Url.Replace("{CDSBLimsLoginNo}", Convert.ToBase64String(ms.ToArray())); } return Url; } } }