Tag: sha

在Windows窗体中使用SHA-256散列文本

String inputPass = textBox2.Text; byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(inputPass); byte[] inputHashedBytes = Sha256.ComputeHash(inputBytes); String inputHash = Convert.ToBase64String(inputHashedBytes); 我得到一些奇怪的输出: Q9nXCEhAn7RkIOVgBbBeOd5LiH7FWFtDFJ22TMLSoH8 = 通过输出哈希看起来像这样: 43d9d70828409fb46420e56005b05e38de4b887ec5585b43149db64cc2d2a07f

C#和Javascript SHA256散列的代码示例

我在服务器端运行的C#中有一个算法,它使用base64编码的字符串进行哈希处理。 byte[] salt = Convert.FromBase64String(serverSalt); // Step 1 SHA256Managed sha256 = new SHA256Managed(); // Step 2 byte[] hash = sha256.ComputeHash(salt); // Step 3 Echo(“String b64: ” + Convert.ToBase64String(hash)); // Step 4 然后根据哈希的数据库列表检查哈希。 我喜欢用javascript实现同样的function,使用serverSalt,因为它是通过websocket从C#传输的。 我知道C#和Javascript之间的SHA-256哈希值不同,因为C#和Javascript有不同的字符串编码。 但我知道我可以在字节数组中填充零以使Javascript表现为C#(上面的步骤1已经解决)。 var newSalt = getByteArrayFromCSharpString(salt); // Pad zeros where needed function getByteArrayFromCSharpString(inString) { var bytes = []; for (var i = […]

密码哈希 – 为什么要盐60,000次

我正在为一家财富100强企业工作,我将面临从SHA1到SHA-2的安全任务。 这不是我的专业领域,但在我研究密码学时,我质疑过时的信息…… 显然需要SHA-2而不是SHA-1,但是当安全团队知道密码+盐的散列使用SHA时,GPU在破解数十亿个哈希时非常快速 – 我不知道为什么密码我不是被告知使用bcrypt或其他慢速的等效物,为什么? 我看到了一张幻灯片,我被告知要制作我的盐60,000次。 我搜索了整个互联网,我没有看到任何这样的建议或例子。 为什么? 我正在使用C# string SaltAndPwd = string.Concat(plainTextPassword, salt); SHA256 sha2 = SHA256Managed.Create(); byte[] buff = sha2.ComputeHash(Encoding.Unicode.GetBytes(SaltAndPwd)); 我想我并没有被告知反复创建一个盐,而是一遍又一遍地创建哈希。 这个逻辑是否合适? string plainTextPassword = “aF7Cvs+QzZKM=4!”; string salt = “o9kc5FvhWQU==”; SHA256 sha2 = SHA256Managed.Create(); for(var i = 0; i <= 60000; i++) { byte[] buff = sha2.ComputeHash(Encoding.Unicode.GetBytes(SaltAndPwd)); } 如何使此散列正常工作? 更新发现了powerpoint幻灯片 使用代码更新 – validation哈希的实现问题 […]

为什么SHA1.ComputeHash在很multithreading的高负载下失败?

我看到我维护的一些代码存在问题。 下面的代码有一个private static SHA1成员(这是一个IDisposable但因为它是static ,它永远不应该最终确定)。 但是,在压力下,此代码会抛出一个exception,表明它已被关闭: Caught exception. Safe handle has been closed” Stack trace: Call stack where exception was thrown at System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success) at System.Security.Cryptography.Utils.HashData(SafeHashHandle hHash, Byte[] data, Int32 cbData, Int32 ibStart, Int32 cbSize) at System.Security.Cryptography.Utils.HashData(SafeHashHandle hHash, Byte[] data, Int32 ibStart, Int32 cbSize) at System.Security.Cryptography.HashAlgorithm.ComputeHash(Byte[] buffer) 有问题的代码是: internal class TokenCache { private static SHA1 […]

我何时应该使用SHA-1,何时应该使用SHA-2?

在我的c#应用程序中,我正在使用RSA签名文件,然后由上传的人上传到我公司的数据库中,在这里我必须选择SHA-1或SHA-2来计算哈希值。 与编程中的任何其他组件一样,我知道必须有一个“在这里使用”和“在那里使用”这两个组件。 那么,什么时候? 那时呢? 编辑: 我的问题是:性能有什么不同? 而不是关于安全性,因为我已经知道SHA-2比SHA-1更安全。 在此链接中 ,不同类型的SHA-2之间的比较注意何时使用SHA-512以及何时不使用SHA-512。 我需要一个关于SHA-1和SHA-2的类似论点。

如何计算C#中的SQL Server(hashbytes(’SHA1’,))的等价物?

在我的数据库中,我有一个计算列,其中包含一个名为URLString的列的SHA1哈希值,该列保存URL(例如“http://xxxx.com/index.html”)。 我经常需要查询表以根据URLString列查找特定的URL。 该表包含100K,这些查询需要几秒钟(使用SQL Azure)。 由于URL可能很长,我无法在此列上创建索引(大于450字节)。 为了加快速度,我想从C#计算SQL Server哈希字节(’SHA1’,[URLString])的等效值,并根据该值进行查询。 我尝试了下面的代码,但是我获得的值与数据库计算的值不同。 var urlString = Encoding.ASCII.GetBytes(url.URLString); //UTF8 also fails var sha1 = new SHA1CryptoServiceProvider(); byte[] hash = sha1.ComputeHash(urlString); 我在这里错过了一些小事吗? 我对其他可以解决相同问题的想法持开放态度(只要它们受SQL Azure支持)。 示例:在数据库中,URL http://www.whatismyip.org/的自动计算SHA1值为0xAE66CA69A157186A511ED462153D7CA65F0C1BF7。