5

我正在考虑在 C# 上创建一个程序来获取一系列非常大的文件的 SHA1 二进制 base64 哈希。

现在我可以通过在 OpenSSL 上运行这个指令来完成它:

openssl sha1 -二进制文件名 | openssl base64

但是我还没有找到“二进制”和“base64”部分的引用来获得与 C# 相同的结果。

可能吗?也许在 C# 中调用 openssl?

谢谢你。

4

2 回答 2

9

您需要使用 Convert.ToBase64String 方法和 System.IO 命名空间来读取二进制文件:

string GetBase64EncodedSHA1Hash(string filename)
{
    using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read))
    using (SHA1Managed sha1 = new SHA1Managed())
    {
        return Convert.ToBase64String(sha1.ComputeHash(fs));
    }
}
于 2013-10-03T04:04:23.130 回答
0

最简单的方法是 Get-FileHash,它自 PS 4.0 起就可用

$ echo "Hello world" >1.tm
$
$ Get-FileHash 1.tm

Algorithm       Hash                                                                   
Path
---------       ----                                                                   ----
SHA256          B995A2FAFFB3F27C632CE037BDB2ADB04EC3E578D0FA794BA50CFC16F0F219BF       
C:\scratch\1.tm


$
于 2018-12-11T21:25:58.390 回答