src/DotNetCommon.Core/Encrypt/Sha256.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using DotNetCommon.Extensions;

namespace DotNetCommon.Encrypt
{
    /// <summary>
    /// Sha256加密算法,类似MD5
    /// </summary>
    public static class Sha256
    {
        private static EasyPool<SHA256> pool = new EasyPool<SHA256>(() => SHA256.Create(), s => s.Initialize(), 200);

        /// <summary>
        /// MD5加密字符串(32位大写)
        /// </summary>
        /// <param name="source">源字符串</param>
        /// <returns>加密后的字符串</returns>
        public static string SHA256Hash(string source)
        {
            if (source.IsNullOrEmpty()) return source;
            byte[] data = Encoding.UTF8.GetBytes(source);
            var sha = pool.Get();
            try
            {
                var hashBytes = sha.ComputeHash(data);
                var s = Base64UrlSafe.Encode(hashBytes);
                Array.Clear(data);
                Array.Clear(hashBytes);
                return s;
            }
            finally
            {
                pool.Return(sha);
            }
        }

        /// <summary>
        /// Sha256加密流(32位大写),默认将流的指针回退到开始位置
        /// </summary>
        /// <param name="stream">要操作的流</param>
        /// <param name="isSeekBegin">是否将流指针回退到开始位置</param>
        /// <returns>加密后的字符串</returns>
        public static string SHA256Hash(Stream stream, bool isSeekBegin = true)
        {
            if (stream == null) throw new Exception("流不能为null!");
            if (isSeekBegin) stream.Position = 0;
            var sha = pool.Get();
            try
            {
                var hashBytes = sha.ComputeHash(stream);
                var s = Base64UrlSafe.Encode(hashBytes);
                Array.Clear(hashBytes);
                return s;
            }
            finally
            {
                pool.Return(sha);
后面还有 16 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。