c# .net sha1加密的几种形式,经过微信签名测试有效

本文介绍了三种不同的C# SHA1加密方法,包括使用`System.Security.Cryptography.SHA1`类,`System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile`(已过时)以及自定义实现。每种方法都详细展示了代码实现,并指出`tostring(x2)`用于生成16进制小写字符的字符串。这些方法适用于需要进行SHA1哈希加密的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

推荐使用(经过微信签名测试有效)

/// <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.net(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输出为小写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙-极纪元JJYCheng

客官,1分钱也是爱,给个赏钱吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值