/// <summary> /// 获取加密TOKEN /// </summary> /// <returns></returns> public string ToCipherToken() { Encoding utf8 = Encoding.UTF8; TimeStamp stamp = this.Expire_Time; string plainText = string.Format("{0}|{1}|{2}|{3}|{4}", (int)stamp.Seconds, this.UserId, this.UserCode, this.AppId.ToString().PadLeft(5, '0'), this.Verifiable ? 1 : 0); var des = new DesEncodeDecode(SECRET, System.Security.Cryptography.CipherMode.ECB, System.Security.Cryptography.PaddingMode.PKCS7, true, utf8); byte[] input = utf8.GetBytes(plainText); byte[] output = des.DesEncrypt(input); string base58 = Base58.Encode(output); return(base58); }
public override ThirdpartyUserToken GetUserToken(HttpContext ctx) { string cipher_openid = ctx.Request.Query["openid"]; string cipher_token = ctx.Request.Query["token"]; DesEncodeDecode des = new DesEncodeDecode(this.Config.Secret); byte[] bytes_openid = des.DesEncrypt(Base58.Decode(cipher_openid)); byte[] bytes_token = des.DesEncrypt(Base58.Decode(cipher_token)); ThirdpartyUserToken ut = new ThirdpartyUserToken { AccessToken = Encoding.UTF8.GetString(bytes_token), OpenID = Encoding.UTF8.GetString(bytes_openid) }; return(ut); }
/// <summary> /// Des解密 /// </summary> /// <param name="cipherText"></param> /// <param name="key"></param> /// <param name="plainText"></param> /// <returns></returns> public static bool DesDecrypt(string cipherText, string key, out string plainText) { Encoding utf8 = Encoding.UTF8; try { DesEncodeDecode des = new DesEncodeDecode(key, System.Security.Cryptography.CipherMode.ECB, System.Security.Cryptography.PaddingMode.PKCS7, true, utf8); byte[] input = Base58.Decode(cipherText); byte[] output = des.DesDecrypt(input); plainText = utf8.GetString(output); return(true); } catch (Exception ex) { plainText = ex.Message; return(false); } }
/// <summary> /// 从TOKEN中解密数据 /// </summary> /// <param name="cipherToken"></param> /// <returns></returns> public static UserToken FromCipherToken(string cipherToken) { byte[] input = Base58.Decode(cipherToken); var des = new DesEncodeDecode(SECRET, System.Security.Cryptography.CipherMode.ECB, System.Security.Cryptography.PaddingMode.PKCS7, true); byte[] output = des.DesDecrypt(input); string plainText = Encoding.UTF8.GetString(output); string[] array = plainText.Split('|'); int seconds; int user_id, appid; if (!int.TryParse(array[0], out seconds)) { return(null); } TimeStamp timestamp = seconds; if (!int.TryParse(array[1], out user_id)) { return(null); } if (!int.TryParse(array[3], out appid)) { return(null); } UserToken userToken = new UserToken { Expire_Time = timestamp.LocalDate, UserCode = array[2], UserId = user_id, AppId = appid, Verifiable = (array.Length > 3) ? (array[3] == "1") : false }; return(userToken); }
public static bool DesEncrypt(string plainText, string key, out string cipherText) { Encoding utf8 = Encoding.UTF8; try { DesEncodeDecode des = new DesEncodeDecode(key, System.Security.Cryptography.CipherMode.ECB, System.Security.Cryptography.PaddingMode.PKCS7, true, utf8); byte[] input = utf8.GetBytes(plainText); //var base64 = des.DesEncrypt(plainText); //var bytes = Convert.FromBase64String(base64); //cipherText = bytes.Byte2HexString(); byte[] output = des.DesEncrypt(input); cipherText = Base58.Encode(output); return(true); } catch (Exception ex) { cipherText = ex.Message; return(false); } }