MD5
/// <summary>
/// MD5加密,32位
/// </summary>
/// <param name="news1">需要加密的文本</param>
/// <param name="input_charset">"utf-8"</param>
/// <returns></returns>
public static string GetMD5_32(string news1, string input_charset)
{
MD5 md5 = MD5.Create();
byte[] t = md5.ComputeHash(Encoding.GetEncoding(input_charset).GetBytes(news1));
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < t.Length; i++)
{
stringBuilder.Append(t[i].ToString("x").PadLeft(2, '0'));
}
return stringBuilder.ToString();
}
RSA签名
/// <summary>
/// 利用私钥对消息进行RSA2加密
/// </summary>
/// <param name="PrivateKey">私钥</param>
/// <param name="news">消息</param>
/// <returns></returns>
public static string GetSign(string PrivateKey, string news)
{
if (PrivateKey.StartsWith("M"))//如果是.java格式则先转换为.net格式
{
PrivateKey = RSAPrivateKeyJava2DotNet(PrivateKey);
}
//根据需要加签时的哈希算法转化成对应的hash字符节
byte[] bt = Encoding.GetEncoding("utf-8").GetBytes(news);
var sha256 = new SHA256CryptoServiceProvider();//此
byte[] rgbHash = sha256.ComputeHash(bt);
RSACryptoServiceProvider RSACSP = new RSACryptoServiceProvider();
RSACSP.FromXmlString(PrivateKey);
RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(RSACSP);
formatter.SetHashAlgorithm("SHA256");//此处加签的hash算法,需要和上边计算的hash值的算法一致,不然会报错。
byte[] inArray = formatter.CreateSignature(rgbHash);
return Convert.ToBase64String(inArray);
}
对传入字符串m_strSource进行md5哈希加密:
public string GetHash(string m_strSource)//对传入字符串m_strSource进行md5加密。
{
//HashAlgorithm.Create(String)方法创建 HashAlgorithm 类的实现的实例。参数的有效值包括:"MD5"、"SHA"等标准哈希
//函数的名称,使用HashAlgorithm.Create("MD5")与MD5CryptoServiceProvider的效果等价。
HashAlgorithm algorithm = HashAlgorithm.Create("MD5");//创建哈希算法的指定实现的实例
byte[] bytes = new UnicodeEncoding().GetBytes(m_strSource);//包含对指定字符集编码的结果
byte[] inArray = algorithm.ComputeHash(bytes);//计算8位无符号整数字节数组的hash值
return Convert.ToBase64String(inArray);//将8位无符号整数的数组转换为其用Base64数字编码的等效字符串表示形式
}