Tag: 哈希

如何脱机存储密码

虽然这是专注于Windows Phone 7,但我猜这个原则是普遍的。 我想在我的应用程序中有一个密码保护区域。 但是,我的应用程序完全脱机,因此我必须在手机上存储凭据详细信息。 我最初的想法是存储密码和盐的哈希值。 这会是最好的方式吗? 如果是这样,哈希和盐是否应以纯文本forms存储,或者是否有办法确保即使它们已加密? 我知道手机上的整个方案最终会被破解,但是什么是提高障碍的最佳途径? 谢谢你的任何建议

比SHA1更好的散列

我正在处理一个应用程序,我需要存储用户密码,所以我想我会将它存储在注册表的当前用户类中,但我也想把它哈希,原因很明显,我已经看到新闻项目表明SHA1已被破解,“标准”系统或.net中是否有更好的(未破解的)散列算法?

.NET字符串哈希函数是否可移植?

可能重复: 如何在.net(c#)中创建一个可以安全存储在数据库中的字符串的HashCode? 我使用C#4.0并通过调用获取字符串哈希: “my string”.GetHashCode() 此调用生成的代码将存储到数据库中以供将来使用。 此哈希码用于查找字符串的某个子集,然后进行相等比较。 问题是: 它是标准化的哈希计算吗? 我是否可以假设可以在不同的环境中计算相同的哈希值,例如.Net 3.0中的C#或未来的.Net版本? 是否可以通过用Java,PL / SQL,Ruby等编写自己来计算相同的哈希函数? 我可以假设今天生成的哈希在明天在同一环境中是相同的吗? 例如,当我关闭计算机并再次运行程序,或更改区域设置或其他一些设置时? 便携性的限制是什么? 我知道我可以自己做,但也许提供某种便携性?

存储盐以及散列密码的安全性如何

如果您查看了asp.net成员系统的表模式,他们会存储原始密码的哈希值以及用于生成密码的盐。 看下面的架构, dbo.aspnet_Membership ApplicationId UserId Password PasswordFormat PasswordSalt MobilePIN Email . . . 如果攻击者掌握了数据库,他是否更容易从盐中打开原始密码并散列密码? 在查看一些记录之后,似乎为每个密码生成了新的盐。 这有什么意义? 您会在代码中推荐这样的方法,还是硬代码常量盐 有关 如果攻击者知道盐是否对安全无用?

在C#中计算大文件的MD5SUM

我使用以下代码来计算文件的MD5SUM – byte[] b = System.IO.File.ReadAllBytes(file); string sum = BitConverter.ToString(new MD5CryptoServiceProvider().ComputeHash(b)); 这通常工作正常,但如果我遇到一个大文件(~1GB) – 例如ISO映像或DVD VOB文件 – 我得到一个Out of Memoryexception。 虽然,我能够在cygwin中为大约10秒的同一文件计算MD5SUM。 请建议如何让我的程序中的大文件工作。 谢谢

在C#中使用MD5CryptoServiceProvider存储密码是否安全?

我们将散列密码存储在数据库表中。 我们使用MD5CryptoServiceProvider为每个密码添加随机salt值和哈希值。 这样安全吗? 我听说MD5“坏了”。 如果没有,您能推荐使用备用哈希方法(特定的.NET框架类)吗?

更快的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 “”; }

通过多个TransformBlock进行并行哈希计算会导致混乱

我正在尝试为整个目录计算哈希值,以便稍后监视更改。 这相对容易。 但是,如果有大文件,计算需要花费太多时间,所以我最终使用了一些multithreading。 由于I / O瓶颈,我应该读取一个带有一个线程的文件,但我可以一次调用TransformBlock方法在多个线程中计算该文件的哈希值。 问题是,每次计算的结果都不同 – 因为所有线程都更新了hashAlgorithm的一个实例,它们会不规律地执行。 public delegate void CalculateHashDelegate(byte[] buffer); private MD5 md5; private long completed_threads_hash; private object lock_for_hash = new object(); `private string getMd5Hash(string file_path) { string file_to_be_hashed = file_path; byte[] hash; try { CalculateHashDelegate CalculateHash = AsyncCalculateHash; md5 = MD5.Create(); using (Stream input = File.OpenRead(file_to_be_hashed)) { int buffer_size = […]

如何使用项目的哈希检查HashSet是否包含项目?

我想检查HashSet是否包含特定元素。 我已经有了元素的int哈希码,但没有对元素本身的引用。 是否可以在不迭代整个集合的情况下执行此操作?

如何使用哈希字节比较2个图像是否相同?

private void button1_Click(object sender, EventArgs e) { Bitmap im1 = new Bitmap(@”C:\Users\user\Downloads\CaptchaCollection\1.png”); Bitmap im2 = new Bitmap(@”C:\Users\user\Downloads\CaptchaCollection\2.png”); if (HashImage(im1) == HashImage(im2)) { MessageBox.Show(“Same Image”); } else { MessageBox.Show(“Different Image”); } } 如果单击该按钮,它将比较这两个图像。 以下是用于散列图像的代码。 public byte[] HashImage(Bitmap image) { var sha256 = SHA256.Create(); var rect = new Rectangle(0, 0, image.Width, image.Height); var data = image.LockBits(rect, ImageLockMode.ReadOnly, […]