首页 .Net .NET Core(C#) 使用sha256和sha512计算文件哈希值(hash)

.NET Core(C#) 使用sha256和sha512计算文件哈希值(hash)

1、使用sha256计算文件hash

using System;
using System.IO;
using System.Security.Cryptography;
public >HashDirectory
{
    public static void Main(String[] args)
    {
        if (args.Length < 1)
        {
            Console.WriteLine("No directory selected.");
            return;
        }
        string directory = args[0];
        if (Directory.Exists(directory))
        {
            // 创建一个表示指定目录的DirectoryInfo对象。
           var dir = new DirectoryInfo(directory);
            // 获取目录中每个文件的FileInfo对象。
            FileInfo[] files = dir.GetFiles();
            // 初始化一个SHA256哈希对象。
            using (SHA256 mySHA256 = SHA256.Create())
            {
                // 计算并打印目录中每个文件的哈希值。
                foreach (FileInfo fInfo in files)
                {
                    try { 
                        // 为文件创建一个fileStream。
                        FileStream fileStream = fInfo.Open(FileMode.Open);
                        // 确保它位于流的开头。
                        fileStream.Position = 0;
                        //计算fileStream的hash。
                        byte[] hashValue = mySHA256.ComputeHash(fileStream);
                        // 将文件的名称和散列值写入控制台。
                        Console.Write($"{fInfo.Name}: ");
                        PrintByteArray(hashValue);
                        // 关闭该文件。
                        fileStream.Close();
                    }
                    catch (IOException e) {
                        Console.WriteLine($"I/O Exception: {e.Message}");
                    }
                    catch (UnauthorizedAccessException e) {
                        Console.WriteLine($"Access Exception: {e.Message}");
                    }
                }
            }
        }
        else
        {
            Console.WriteLine("The directory specified could not be found.");
        }
    }
    // 以可读格式显示字节数组。
    public static void PrintByteArray(byte[] array)
    {
        for (int i = 0; i < array.Length; i++)
        {
            Console.Write($"{array[i]:X2}");
            if ((i % 4) == 3) Console.Write(" ");
        }
        Console.WriteLine();
    }
}

2、使用sha512计算文件hash

using System;
using System.IO;
using System.Security.Cryptography;
public >HashDirectory
{
    public static void Main(String[] args)
    {
        if (args.Length < 1)
        {
            Console.WriteLine("No directory selected.");
            return;
        }
        string directory = args[0];
        if (Directory.Exists(directory))
        {
            // 创建一个表示指定目录的DirectoryInfo对象。
           var dir = new DirectoryInfo(directory);
            // 获取目录中每个文件的FileInfo对象。
            FileInfo[] files = dir.GetFiles();
            // 初始化一个SHA512哈希对象。
            using (SHA512 mySHA512 = SHA512Managed())
            {
                // 计算并打印目录中每个文件的哈希值。
                foreach (FileInfo fInfo in files)
                {
                    try { 
                        // 为文件创建一个fileStream。
                        FileStream fileStream = fInfo.Open(FileMode.Open);
                        // 确保它位于流的开头。
                        fileStream.Position = 0;
                        //计算fileStream的hash。
                        byte[] hashValue = mySHA512.ComputeHash(fileStream);
                        // 将文件的名称和散列值写入控制台。
                        Console.Write($"{fInfo.Name}: ");
                        PrintByteArray(hashValue);
                        // 关闭该文件。
                        fileStream.Close();
                    }
                    catch (IOException e) {
                        Console.WriteLine($"I/O Exception: {e.Message}");
                    }
                    catch (UnauthorizedAccessException e) {
                        Console.WriteLine($"Access Exception: {e.Message}");
                    }
                }
            }
        }
        else
        {
            Console.WriteLine("The directory specified could not be found.");
        }
    }
    // 以可读格式显示字节数组。
    public static void PrintByteArray(byte[] array)
    {
        for (int i = 0; i < array.Length; i++)
        {
            Console.Write($"{array[i]:X2}");
            if ((i % 4) == 3) Console.Write(" ");
        }
        Console.WriteLine();
    }
}

相关文档:

.NET Core 通过扩展方法实现密码字符串加密(sha256和Sha512)

system.security.cryptography


特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。