c# .net sha1加密的几种形式,经过微信签名测试有效
推荐使用(经过微信签名测试有效)
/// <summary>
/// Sha1签名
/// </summary>
/// <param name="str">内容</param>
/// <param name="encoding">编码</param>
/// <returns></returns>
private static string Sha1Signature(string str, Encoding encoding=null)
{if (encoding == null) encoding = Encoding.UTF8;var buffer = encoding.GetBytes(str);var data = SHA1.Create().ComputeHash(buffer);StringBuilder sub = new StringBuilder();foreach (var t in data){sub.Append(t.ToString("x2"));}return sub.ToString();
}
tostring("x2")中x表示16进制 而且区分大小写 X输出为大写 x输出为小写
调用
string resultStr="我是内容";
Sha1Signature(resultStr, Encoding.UTF8);
有一种比较简单
SHA1相关类:
System.Security.Cryptography.SHA1
System.Security.Cryptography.SHA1CryptoServiceProvider()
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "SHA1")
这种 官方提示已过时
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "SHA1")
实现1
转载:【转】asp(c#)加密解密算法之sha1、md5、des、aes实现源码详解 - 神叉 - 博客园
/// <summary>
/// 对字符串SHA1加密
/// </summary>
/// <param name="source">源字符串</param>
/// <param name="encoding">编码类型</param>
/// <returns>加密后的十六进制字符串</returns>
public static string Sha1Encrypt(string source, Encoding encoding = null)
{if (encoding == null) encoding = Encoding.UTF8;// 第一种方式byte[] byteArray = encoding.GetBytes(source);using (HashAlgorithm hashAlgorithm = new SHA1CryptoServiceProvider()){byteArray = hashAlgorithm.ComputeHash(byteArray);StringBuilder stringBuilder = new StringBuilder(256);foreach (byte item in byteArray){stringBuilder.AppendFormat("{0:x2}", item);}hashAlgorithm.Clear();return stringBuilder.ToString();}第二种方式//using (SHA1 sha1 = SHA1.Create())//{// byte[] hash = sha1.ComputeHash(encoding.GetBytes(source));// StringBuilder stringBuilder = new StringBuilder();// for (int index = 0; index < hash.Length; ++index)// stringBuilder.Append(hash[index].ToString("x2"));// sha1.Clear();// return stringBuilder.ToString();//}
}
tostring("x2")中x表示16进制 而且区分大小写 X输出为大写 x输出为小写
实现2
转载:C# sha1加密_天马3798-CSDN博客_c# sha1
/// <summary>/// SHA1 加密,返回大写字符串/// </summary>/// <param name="content">需要加密字符串</param>/// <returns>返回40位UTF8 大写</returns>public static string SHA1(string content){return SHA1(content, Encoding.UTF8);}/// <summary>/// SHA1 加密,返回大写字符串/// </summary>/// <param name="content">需要加密字符串</param>/// <param name="encode">指定加密编码</param>/// <returns>返回40位大写字符串</returns>public static string SHA1(string content, Encoding encode){try{SHA1 sha1 = new SHA1CryptoServiceProvider();byte[] bytes_in = encode.GetBytes(content);byte[] bytes_out = sha1.ComputeHash(bytes_in);sha1.Dispose();string result = BitConverter.ToString(bytes_out);result = result.Replace("-", "");return result;}catch (Exception ex){throw new Exception("SHA1加密出错:" + ex.Message);}}
实现3
转载:
Asp.Net 实现SHA1加密-HiError
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;namespace WebToolkit.Encrypt
{public class SHA1Helper{/// <summary>/// Net实现Sha1加密算法/// </summary>/// <param name="str">要加密的字符串,默认编码为UTF-8</param>/// <returns>加密后的十六进制的哈希散列(字符串)</returns>public static string Sha1Signature(string str){return Sha1Signature(str, Encoding.UTF8);}public static string Sha1Signature(string str, Encoding encoding){var buffer = encoding.GetBytes(str);var data = SHA1.Create().ComputeHash(buffer);StringBuilder sub = new StringBuilder();foreach (var t in data){sub.Append(t.ToString("X2"));}return sub.ToString();}}
}
tostring("x2")中x表示16进制 而且区分大小写 X输出为大写 x输出为小写
发布评论