首页 技术 正文
技术 2022年11月15日
0 收藏 749 点赞 4,775 浏览 3600 个字
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;namespace 加密接口
{
class Program
{
//uname:zyy144,upwd:ab12356,uid:6846
static void Main(string[] args)
{
string password = "http04";
var json = TextJson("http04", password, "", "内容加【wufdf】", "", "");
string userid = ""; string text64 = Text64(password, json);
var rlt= HttpRequestHelper.Request(userid,text64, "http://localhost/ensms.ashx");
}
public static string Md5Encrypt(string text)
{
var originalBytes = Encoding.UTF8.GetBytes(text);
byte[] encodedBytes;
using (var md5 = new MD5CryptoServiceProvider())
{
encodedBytes = md5.ComputeHash(originalBytes);
}
return ToHexString(encodedBytes);
}
private static readonly char[] HexChars = { '', '', '', '', '', '', '', '', '', '', 'A', 'B', 'C', 'D', 'E', 'F' };
/// <summary>
/// 转换成16进制的字符串形式。
/// </summary>
/// <param name="bytes">要转铁的字节数组</param>
/// <returns>返回转铁后的值</returns>
public static string ToHexString(byte[] bytes)
{
int chArrayLength = bytes.Length * ;
var charArray = new char[chArrayLength];
int index = ;
for (var i = ; i < chArrayLength; i += )
{
byte b = bytes[index++];
charArray[i] = HexChars[b / ];
charArray[i + ] = HexChars[b % ];
}
return new String(charArray);
}
/// <summary>
/// 对指定的字符串,进行md5,32加密,并返回加密后的节字形式的文本。
/// </summary>
/// <param name="text">要加密码的字符串</param>
/// <param name="encoding">指定编码方式</param>
/// <returns>返回加密后的节字形式的文本</returns>
public static string Md5Encrypt(string text, Encoding encoding)
{
var originalBytes = encoding.GetBytes(text);
byte[] encodedBytes;
using (var md5 = new MD5CryptoServiceProvider())
{
encodedBytes = md5.ComputeHash(originalBytes);
}
return ToHexString(encodedBytes);
}
/// <summary>
/// 生成json 字符串对象
/// </summary>
/// <param name="username"></param>
/// <param name="password"></param>
/// <param name="mobile"></param>
/// <param name="text"></param>
/// <param name="ext"></param>
/// <param name="sendTime"></param>
/// <returns></returns>
private static string TextJson(string username,string password,string mobile,string text ,string ext,string sendTime)
{
string Stamp = DateTime.Now.ToString("MMddHHmmss");
Text64Data text64Data = new Text64Data() {
UserName = username,
Secret = Md5Encrypt(password + Stamp),
Stamp = Stamp,
Moblie=mobile,
Text=text,
Ext=ext,
SendTime =sendTime
};
var json= JsonConvert.SerializeObject(text64Data);
return json;
}
/// <summary>
///
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
private static byte[] GetKey(string password)
{
// Key 的生成方式,将Password转为字节数组,取前8位(不足8位,右侧补字节0)
password = password.Length >= ? password.Substring(, ) : password;
byte[] pwd = Encoding.UTF8.GetBytes(password);
byte[] key = new byte[];
for (int i = ; i < pwd.Length; i++)
{
key[i] = pwd[i];
}
return key;
}
/// <summary>
/// base64string
/// </summary>
/// <param name="password"></param>
/// <param name="json"></param>
/// <returns></returns>
private static string Text64(string password,string json)
{ byte[] key = GetKey(password);
byte[] content = Encoding.UTF8.GetBytes(json);
return Convert.ToBase64String( DESEncrypt(content,key));
}
/// <summary>
/// des加密
/// </summary>
/// <param name="original"></param>
/// <param name="key"></param>
/// <returns></returns>
public static byte[] DESEncrypt(byte[] original, byte[] key)
{ using (var des = new DESCryptoServiceProvider())
{
des.Padding = PaddingMode.PKCS7;
des.Mode = CipherMode.CBC;
des.Key = key;
des.IV = key;
using (var ms = new System.IO.MemoryStream())
{
var cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(original, , original.Length);
cs.FlushFinalBlock();
cs.Close();
cs.Dispose(); return ms.ToArray();
}
}
}
}
public class Text64Data
{
public string UserName { get; set; }
public string Secret { get; set; }
public string Stamp { get; set; } public string Moblie { get; set; }
public string Text { get; set; }
public string Ext { get; set; }
//yyyy-MM-dd HH:mm:ss
public string SendTime { get; set; }
}}
注意编码格式:很重要
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,086
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,561
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,410
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,183
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,820
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,903