Tag: 哈希

将字节数组转换为字符串然后再返回会产生不同的结果

我正在使用libsodium的.net端口 。 哈希生成函数有两种forms,一种接受字节数组,另一种接受字符串: public static byte[] ArgonHashBinary(string password, string salt, long opsLimit, int memLimit, long outputLength = ARGON_SALTBYTES) public static byte[] ArgonHashBinary(byte[] password, byte[] salt, long opsLimit, int memLimit, long outputLength = ARGON_SALTBYTES) 我遇到的问题是两种forms在输入值相同时产生相同的散列。 var saltAsBytes = PasswordHash.ArgonGenerateSalt(); var saltAsString = Encoding.UTF8.GetString(saltAsBytes); var tmp = Encoding.UTF8.GetBytes(saltAsString); var hash1 = PasswordHash.ArgonHashBinary(password, saltAsString, 6, 134217728, 16); var […]

适合字节数组的哈希码方法?

对于一个byte数组,最好的哈希方法是什么? 这些数组是序列化的类对象,包含通过TCP / IP在应用程序之间传递的jpeg图像。 arrays大小约为200k。

什么解码我编码的哈希符号(%23)?

我们注意到有几台机器存在带有哈希参数的URL问题。 使用URL调试请求时: http://domain.com/Entity(%23{number-here} 我们在global.asax文件的Application_BeginRequest方法中看到Url.OriginalString的URL: http://domain.com/Entity(#23{number-here} : Url.OriginalString ( Url.LocalPath http://domain.com/Entity(#23{number-here} Url.OriginalString http://domain.com/Entity(#23{number-here} , Url.LocalPath有http://domain.com/Entity(以及散列后的所有字符都在Url.Fragment 。 在运行Windows 8.1和IIS 8.5的计算机上运行完全相同的应用程序时,它按预期工作, Url.OrinalString是http://domain.com/Entity(%23{number-here} 。 我在web.config或IIS配置中的URL重写部分中看不到任何疑问。 这种行为可能是什么原因?

带整数键的哈希表(字典等)

我已经困惑了几天……随意拍下我的任何假设。 我们正在使用带整数键的字典。 我假设在这种情况下密钥的值直接用作哈希。 这是否意味着(如果密钥分组在一个小范围内)密钥散列的分布(与密钥本身相同,对吗?)将处于类似的小范围内,因此哈希表的选择不好? 是否更好的是提供一个IEqualityComparer,它使用素数和模数学来做一些聪明的东西来计算更好的分布式哈希?

CNG,CryptoServiceProvider和HashAlgorithm的托管实现

所以我想知道哈希算法的各种实现之间是否存在任何重大差异,例如以SHA系列算法为例。 它们每个都有3个实现,1个托管代码和2个围绕不同本机加密API的包装器,但使用它们之间有什么主要区别吗? 我可以想象包装器版本可以具有更高的性能,因为它在本机代码中执行,但是他们都需要执行完全相同的计算,从而提供相同的输出,即嘿是可互换的。 它是否正确? 例如,SHA512CNG无法用于XP SP2(文档错误),但SHA512MANAGED可以。 @Maxim – 谢谢,但不是我要求的。 我问的是,使用给定哈希算法的Managed / CryptoServiceProvider / CNG实现,除了可能的性能之外是否存在任何差异。 使用.NET 3.5,您可以获得具有三种实现的所有哈希算法,因此 SHA512Managed SHA512CryptoServiceProvider SHA512Cng 后两者是本机API的包装器。 例如,对于所有SHAxxx实现都是如此。

来自c#中可变长度字符串的固定长度数字哈希码

我需要存储从可变长度字符串生成的固定长度(最多8位)数字。 哈希不必是唯一的。 它只需要在输入字符串更改时更改。 .Net中是否有哈希函数来执行此操作? 谢谢 基肖尔。

在.NET中使用String.GetHashCode()的哈希质量和稳定性?

我想知道.NET中的String.GetHashCode()实现产生的哈希质量和哈希稳定性 ? 关于质量,我专注于算法方面(因此,哈希的质量,因为它影响大型哈希表,而不是安全问题)。 然后,关于稳定性,我想知道从一个.NET版本到下一个版本可能出现的潜在版本问题。 关于这两个方面的一些亮点将非常感激。

在C#中生成随机盐的最佳方法?

问题就是这样,在C#中生成随机盐(与哈希函数一起使用)的最佳方法是什么?

C#Threading – 同时读取和散列多个文件,最简单的方法?

我一直试图得到我认为最简单的线程forms在我的应用程序中工作,但我不能这样做。 我想做什么:我有一个带有状态条的主表单和一个进度条。 我必须读取3到99个文件之间的内容并将它们的哈希值添加到字符串[]中,我想将其添加到所有文件的列表中,并使用它们各自的哈希值。 之后我必须将该列表中的项目与数据库(文本文件中的数据库)进行比较。 完成所有操作后,我必须将主窗体和进度条中的文本框更新为33%; 大多数情况下,我只是不希望主窗体在处理过程中冻结。 我正在使用的文件总是达到1.2GB(+/-几MB),这意味着我应该能够将它们读入byte []并从那里处理它们(我必须计算CRC32,MD5和SHA1)这些文件中的每一个应该比从HDD中读取所有文件的速度快3倍。 另外我应该注意,一些文件可能是1MB而另一个可能是1GB。 我最初想为99个文件创建99个线程,但这似乎不明智,我想最好重用小文件的线程,而更大的文件线程仍在运行。 但这对我来说听起来很复杂,所以我不确定这是否也是明智之举。 到目前为止,我已经尝试过workerThreads和backgroundWorkers,但似乎对我来说似乎都不太好; 至少backgroundWorkers工作了一些时间,但我甚至无法弄清楚为什么他们不会在其他时间…主要forms仍然冻结的方式。 现在我已经阅读了.NET 4.0中的任务并行库,但我认为在浪费更多时间之前我应该​​更好地问一个知道自己在做什么的人。 我想做的事情看起来像这样(没有线程): List fileSpecifics = new List(); int fileMaxNumber = 42; // something between 3 and 99, depending on file set for (int i = 1; i <= fileMaxNumber; i++) { string fileName = "C:\\path\\to\\file" + i.ToString("D2") + ".ext"; // file01.ext […]

如何在PHPunit testing中获得与C#相同的HMAC256结果?

我以为我会尝试将新的签名请求逻辑添加到我的Facebookcanvas应用程序中,以使我自己“轻松”我在GitHub上访问facebook PHP sdk并查看unit testing 。 我的实际问题是我无法获得请求中包含的哈希值,以匹配我使用应用程序机密计算的哈希值以及请求中发送的数据。 在Facebook的身份validation页面上描述了这是如何工作的 。 private string VALID_SIGNED_REQUEST = “ZcZocIFknCpcTLhwsRwwH5nL6oq7OmKWJx41xRTi59E.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImV4cGlyZXMiOiIxMjczMzU5NjAwIiwib2F1dGhfdG9rZW4iOiIyNTQ3NTIwNzMxNTJ8Mi5JX2VURmtjVEtTelg1bm8zakk0cjFRX18uMzYwMC4xMjczMzU5NjAwLTE2Nzc4NDYzODV8dUk3R3dybUJVZWQ4c2VaWjA1SmJkekdGVXBrLiIsInNlc3Npb25fa2V5IjoiMi5JX2VURmtjVEtTelg1bm8zakk0cjFRX18uMzYwMC4xMjczMzU5NjAwLTE2Nzc4NDYzODUiLCJ1c2VyX2lkIjoiMTY3Nzg0NjM4NSJ9”; private string NON_TOSSED_SIGNED_REQUEST = “laEjO-az9kzgFOUldy1G7EyaP6tMQEsbFIDrB1RUamE.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiJ9”; public void SignedRequestExample() { var Encoding = new UTF8Encoding(); string ApplicationSecret = “904270b68a2cc3d54485323652da4d14”; string SignedRequest = VALID_SIGNED_REQUEST; string ExpectedSignature = SignedRequest.Substring(0, SignedRequest.IndexOf(‘.’)); string Payload = SignedRequest.Substring(SignedRequest.IndexOf(‘.’) + 1); // Back & Forth with Signature byte[] ActualSignature = […]