相关疑难解决方法(0)

更快的MD5替代方案?

我正在开发一个程序,搜索整个驱动​​器的给定文件.目前,我计算了已知文件的MD5哈希值,然后递归扫描所有文件,寻找匹配项.

唯一的问题是MD5在大文件上的速度非常慢.是否有更快的替代方案,我可以使用,同时保留一个非常小的误报可能性?

所有代码都在C#中.

谢谢.

更新

我已经读过,即使MD5也可以非常快,磁盘I/O应该是限制因素.这让我相信我的代码可能不是最佳的.这种方法有什么问题吗?

        MD5 md5 = MD5.Create();
        StringBuilder sb = new StringBuilder();
        try
        {
            using (FileStream fs = File.Open(fileName, FileMode.Open, FileAccess.Read))
            {
                foreach (byte b in md5.ComputeHash(fs))
                    sb.Append(b.ToString("X2"));
            }
            return sb.ToString();
        }
        catch (Exception)
        {
            return "";
        }
Run Code Online (Sandbox Code Playgroud)

c# hash md5

14
推荐指数
5
解决办法
1万
查看次数

如何针对DLL劫持来检测我的.NET应用程序?

我们有一个带注册扩展的.NET 3.5应用程序.我们如何保护它免受DLL劫持攻击?

由于传统和设计问题,强大的命名/签名现在不是一种选择

如果您不知道DLL劫持是什么,请提供额外信息:

.net security dll

8
推荐指数
2
解决办法
3439
查看次数

获取文件SHA256哈希码和校验和

以前我问了一个关于组合SHA1 + MD5 的问题,但之后我理解计算SHA1然后延迟文件的MD5并不比SHA256快.在我的情况下,4.6 GB文件大约需要10分钟,在Linux系统中使用默认实现SHA256和(C#MONO).

public static string GetChecksum(string file)
{
    using (FileStream stream = File.OpenRead(file))
    {
        var sha = new SHA256Managed();
        byte[] checksum = sha.ComputeHash(stream);
        return BitConverter.ToString(checksum).Replace("-", String.Empty);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我读了这个主题,并以某种方式根据他们所说的改变我的代码:

public static string GetChecksumBuffered(Stream stream)
{
    using (var bufferedStream = new BufferedStream(stream, 1024 * 32))
    {
        var sha = new SHA256Managed();
        byte[] checksum = sha.ComputeHash(bufferedStream);
        return BitConverter.ToString(checksum).Replace("-", String.Empty);
    }
}
Run Code Online (Sandbox Code Playgroud)

但它没有这样的感情,需要大约9分钟.

然后我尝试通过sha256sumLinux中的命令测试我的文件中的相同文件,它需要大约28秒,上面的代码和Linux命令都给出相同的结果!

有人建议我阅读Hash Code和Checksum之间的区别,然后我会谈到这个解释差异的主题.

我的问题是:

  1. 是什么导致上述代码和Linux之间的这种不同sha256sum? …

c# mono checksum hashcode sha256

6
推荐指数
2
解决办法
1万
查看次数

使用 SHA1+MD5 的组合

我正在尝试使用一种安全的方式为文件创建校验和(大于 10GB !)。

SHA256 对我来说已经足够安全了,但是这种算法的处理成本太高,而且不适合。好吧,我知道 SHA1 和 MD5 校验和在冲突中都是不安全的。

所以我只是认为最快和最安全的方法是将 MD5 与 SHA1 结合,例如:SHA1+MD5,我认为没有办法同时获取具有相同 MD5 和 SHA1 的文件(碰撞)。

那么结合 SHA1+MD5 对文件校验和是否足够安全?或者是否有任何类似碰撞的攻击?

我以两种方式使用 c# mono(Bufferstream 和不使用 Bufferedstream)

    public static string GetChecksum(string file)
    {
        using (FileStream stream = File.OpenRead(file))
        {
            var sha = new SHA256Managed();
            byte[] checksum = sha.ComputeHash(stream);
            return BitConverter.ToString(checksum).Replace("-", String.Empty);
        }
    }

    public static string GetChecksumBuffered(Stream stream)
    {
        using (var bufferedStream = new BufferedStream(stream, 1024 * 32))
        {
            var sha = new SHA256Managed();
            byte[] checksum = sha.ComputeHash(bufferedStream);
            return BitConverter.ToString(checksum).Replace("-", String.Empty); …
Run Code Online (Sandbox Code Playgroud)

checksum md5 sha1

5
推荐指数
1
解决办法
2133
查看次数

MD5文件处理

大家早上好,

我正在使用C#中的MD5文件完整性检查工具.

为文件提供MD5校验和值需要多长时间?例如,如果我尝试获取2gb .mpg文件,则每次约需5分钟.这似乎过长了.

我只是不耐烦吗?

下面是我正在运行的代码

public string getHash(String @fileLocation)
    {
        FileStream fs = new FileStream(@fileLocation, FileMode.Open);

        HashAlgorithm alg = new HMACMD5();
        byte[] hashValue = alg.ComputeHash(fs);

        string md5Result = "";

        foreach (byte x in hashValue)
        {
            md5Result += x;
        }           

        fs.Close();           

        return md5Result;           
    }
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激.

问候

c# hash md5 integrity

1
推荐指数
1
解决办法
2839
查看次数

标签 统计

c# ×3

md5 ×3

checksum ×2

hash ×2

.net ×1

dll ×1

hashcode ×1

integrity ×1

mono ×1

security ×1

sha1 ×1

sha256 ×1