栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用.NET或MS SQL模拟MySql的password()加密

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用.NET或MS SQL模拟MySql的password()加密

根据MySQL文档,该算法是双SHA1哈希。在检查MySQL源代码时,您会在libmysql /
password.c中找到一个名为make_scrambled_pa​​ssword()的函数。该函数定义如下:

voidmake_scrambled_password(char *to, const char *password){  SHA1_ConTEXT sha1_context;  uint8 hash_stage2[SHA1_HASH_SIZE];  mysql_sha1_reset(&sha1_context);    mysql_sha1_input(&sha1_context, (uint8 *) password, (uint) strlen(password));  mysql_sha1_result(&sha1_context, (uint8 *) to);    mysql_sha1_reset(&sha1_context);  mysql_sha1_input(&sha1_context, (uint8 *) to, SHA1_HASH_SIZE);    mysql_sha1_result(&sha1_context, hash_stage2);    *to++= PVERSION41_CHAR;  octet2hex(to, (const char*) hash_stage2, SHA1_HASH_SIZE);}

使用此方法,您可以创建一个基本上执行相同操作的.NET副本。这是我想出的。当我运行SELECT PASSWORD(’test’);
针对我的MySQL本地副本,返回的值是:

*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29

根据源代码(再次在password.c中),星号开头表示这是MySQL 4.1之后的加密密码方法。例如,当我在VB.Net中模拟功能时,这就是我想出的:

Public Function GenerateMySQLHash(ByVal strKey As String) As String    Dim keyArray As Byte() = Encoding.UTF8.GetBytes(strKey)    Dim enc = New SHA1Managed()    Dim enpredKey = enc.ComputeHash(enc.ComputeHash(keyArray))    Dim myBuilder As New StringBuilder(enpredKey.Length)    For Each b As Byte In enpredKey        myBuilder.Append(b.ToString("X2"))    Next    Return "*" & myBuilder.ToString()End Function

请记住,SHA1Managed()在System.Security.Cryptography命名空间中。此方法返回的输出与MySQL中的PASSWORD()调用相同。希望对您有帮助。

编辑:这是C#中的相同代码

public string GenerateMySQLHash(string key){    byte[] keyArray = Encoding.UTF8.GetBytes(key);    SHA1Managed enc = new SHA1Managed();    byte[] enpredKey = enc.ComputeHash(enc.ComputeHash(keyArray));    StringBuilder myBuilder = new StringBuilder(enpredKey.Length);    foreach (byte b in enpredKey)        myBuilder.Append(b.ToString("X2"));    return "*" + myBuilder.ToString();}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404749.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号