Tag: hash

Windowsapp store中的密码哈希

我正在为我的应用程序编写身份validation服务。 客户端将通过HTTP连接到此身份validation服务以进行注册或连接。 连接后,他们将收到一个会话密钥,他们可以使用加密的TCP / UDP数据包发送到辅助服务器。 这仍然是WIP所以,只是为了给你一个大图概述。 在Serverside中,我使用BCrypt来哈希传入的密码。 并将其存储在数据库中。 在Serverside中,我还使用BCrypts Verify方法检查存储哈希的任何传入密码。 所以这基本上有效。 但是,我自然不想通过线路传输未加密的密码。 Windows Store应用程序没有BCrypt,但我发现了一些MSDN示例代码,演示了如何使用新的Cryptography API for Windows Store应用程序来散列字符串,如下所示: public static string Hash(string password) { HashAlgorithmProvider provider = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha512); CryptographicHash hash = provider.CreateHash(); IBuffer buffer = CryptographicBuffer.ConvertStringToBinary(password, BinaryStringEncoding.Utf16BE); hash.Append(buffer); IBuffer hashedBuffer = hash.GetValueAndReset(); return CryptographicBuffer.EncodeToBase64String(hashedBuffer); } 我计划让各种客户端连接到该服务,而不仅仅是Windowsapp store应用程序(也是传统的Windows桌面应用程序)。 所以很自然地我想要“一种”方式来散列密码客户端。 我需要有关我应该实现的其他安全机制的建议,如果使用SHA512对密码客户端进行散列,如上面的代码中所示,在将其传输到服务器(在存储之前再次散列并加盐)时“足够”。

如何在C#中将CRC32计算为有符号整数?

我是一名PHP开发人员,并且在C#中有点偏离我的元素。 在PHP中,有一个crc32()函数 ,它为您传入的任何字符串返回有符号整数。 所以这就是我习惯的: <?php echo crc32("test"); // displays -662733300 我想在C#中做同样的事情。 我遇到了这个C#类库,但对它知之甚少。 根据他的指示,我应该这样做: // first convert string to byte-array String input = “test”; byte[] bytes = new byte[input.length * sizeof(char)]; System.Buffer.BlockCopy(input.ToCharArray(), 0, bytes, 0, bytes.Length); // then calculate the value Crc32 crc32 = new Crc32(); String output = “”; foreach (byte b in crc32.ComputeHash(bytes)) { […]

基于.net ComputeHash的SQL CLRfunction不适用于Cyrrilic

我编写了以下SQL CLR函数,以便散列大于8000字节的字符串值( T-SQL内置HASHBYTES函数的输入值的限制): [SqlFunction(DataAccess = DataAccessKind.None, IsDeterministic = true)] public static SqlBinary HashBytes(SqlString algorithm, SqlString value) { HashAlgorithm algorithmType = HashAlgorithm.Create(algorithm.Value); if (algorithmType == null || value.IsNull) { return new SqlBinary(); } else { byte[] bytes = Encoding.UTF8.GetBytes(value.Value); return new SqlBinary(algorithmType.ComputeHash(bytes)); } } 它适用于拉丁字符串。 例如,以下哈希值是相同的: SELECT dbo.fn_Utils_GetHashBytes (‘MD5’, ‘test’); — 0x098F6BCD4621D373CADE4E832627B4F6 SELECT HASHBYTES (‘MD5’, ‘test’); […]

密码哈希曾经工作,现在我无法进入我的软件

我根据Code Project文章对我的登录进行了腌制和散列 当我这样做时,我在数据库中的密码和盐字段只是varchar列。 数据在SQL Server Management Studio中显示为问号。 然后一位朋友来了并将列更改为nvarchar数据类型,现在数据似乎是亚洲字母/单词的集合 – 我认为即使是那些读过任何语言的人也没有任何意义。 问题是,现在,即使我创建了新用户,每次登录尝试都会失败。 用户添加和登录 public User Login() // returns an instance of its own class { // get the salt value for the user var auser = ie.users.FirstOrDefault(u => String.Compare(u.emailaddress, emailaddress, false) == 0); if (auser == null) { throw new ValidationException(“User not found”); } // hash […]

md5哈希是否一致或服务器依赖的结果?

我正在做一个md5哈希,只是想确保结果: md5.ComputeHash(bytePassword); 无论服务器是否一致? 例如Windows 2003/2008和32/64位等。

将哈希值转换为hex字符串

在本页面: http://www.shutterfly.com/documentation/OflyCallSignature.sfly 它说,一旦你生成一个哈希你然后: 将哈希值转换为hex字符串 csharp中有代码可以做到这一点吗?

.Net C#到PHP Pb with byte array&ComputeHash

我在.Net C#中有这个function,并希望在PHP中也这样做。 但我不明白所有的C#部分,也不确定我的代码。 public static string getMD5Hash(string input) { MD5 mD = new MD5CryptoServiceProvider(); byte[] array = Encoding.UTF8.GetBytes(input); array = mD.ComputeHash(array); StringBuilder stringBuilder = new StringBuilder(); int i = 0; byte[] array2 = array; int length = array2.Length; while (i < length) { stringBuilder.Append(array2[i].ToString("x2").ToLower()); i++; } return stringBuilder.ToString(); } 我找到了一个例子来描述如何从一个字符串(谁是相同的)创建MD5哈希: http : //en.csharp-online.net/Create_a_MD5_Hash_from_a_string 并找到了关于字符串到字节的SoFpost: 字符串到php中的字节数组 […]

ASP.NET DefaultMembershipProvider的哈希函数中是否存在错误?

我正在迁移我的旧版ASP.NET webforms应用程序,以开始使用ASP.NET内置的DefaultMembershipProvider。 我的旧homebrewn authenticationmodule用于存储SHA256密码哈希值。 我认为’升级’到DefaultMembershipProvider,它也在SQL DB中存储哈希值,这意味着我也可以迁移这些哈希值,因此可以为当前用户提供无痛的升级(因此他们不必重置密码)。 现在,这并没有按计划进行(很明显!)我开始研究DefaultMembershipProvider的来源(更具体地说,就在这里: https : //github.com/wyxy2005/bluceNet/tree/master/ System.Web.Providers )和我来了以下函数: private string EncodePassword(string pass, int passwordFormat, string salt) { if (passwordFormat == 0) { return pass; } byte[] bytes = Encoding.Unicode.GetBytes(pass); byte[] src = Convert.FromBase64String(salt); byte[] inArray = null; if (passwordFormat == 1) { HashAlgorithm hashAlgorithm = this.GetHashAlgorithm(); KeyedHashAlgorithm algorithm2 = hashAlgorithm as […]

试图将C#函数移植到PHP5

我正在尝试将此函数转换为PHP但不知何故它不会给出相同的结果。 public static string EncodePassword(string pass, string salt) { byte[] bytes = Encoding.Unicode.GetBytes(pass); byte[] src = Convert.FromBase64String(salt); byte[] dst = new byte[src.Length + bytes.Length]; byte[] inArray = null; Buffer.BlockCopy(src, 0, dst, 0, src.Length); Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length); HashAlgorithm algorithm = HashAlgorithm.Create(“SHA1”); inArray = algorithm.ComputeHash(dst); return Convert.ToBase64String(inArray); } 这是我在PHP中的看法 function CreatePasswordHash($password, $salt) { $salted_password = […]

C#NTLM哈希计算器

我最近开始学习C#。 我尝试用这种语言生成一个NTLM哈希,但我找不到一个函数来为我做这个。 在python 3.x中,我将导入hashlib并使用hashlib.new(“md4”, “Hello, World!”.encode(“utf-16le”))计算它hashlib.new(“md4”, “Hello, World!”.encode(“utf-16le”)) 。 我在C#中搜索对象浏览器但没有找到任何内容,最接近的是Windows NTLM身份validation类。 我还搜索了微软的文档并发现了哈希计算器,但仅适用于sha1和md5。 有没有办法在C#中计算NTLM哈希? 你能告诉我一个如何做的例子,我宁愿用一个简短的方法来保持简单。 谢谢。