如何在vba中使用Bcrypt.net对PHP中crypt函数存储的密码进行验证

eyh26e7m  于 2023-03-20  发布在  .NET
关注(0)|答案(2)|浏览(117)

我有一个数据库,其中存储的密码使用PHP的crypt函数加密.我发现crypt函数实际上使用bcrypt,我发现http://bcrypt.codeplex.com/ bcrypt是写在一个非常具体的方式与BSD的Base64字母表,而不是常规的Base64字母表.
我跳的Bcrypt.net项目模拟PHP版本。但我不知道任何事情使用DLL在VBA的一面,并能够访问他们的功能。我不知道如何找到在DLL中的功能,模拟Bcrypt。
我正在使用Access 2010中的VBA。有人能帮忙吗?

iyfjxgzm

iyfjxgzm1#

我下载了bcrypt.net从这里Bcrypt.Net。要添加dll文件右键单击项目名称,然后选择“引用..."。一个窗口将打开,然后浏览您的dll文件插入。然后添加代码,因为您需要在您的C#页面。

using BCrypt;
public partial class your_class_name : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string salt = BCrypt.Net.BCrypt.GenerateSalt(); //Generate Salt
        string hash = BCrypt.Net.BCrypt.HashPassword("subinoy", salt); //Using salt to generate password
        if(BCrypt.Net.BCrypt.Verify("username","$2a$10$ljfI1o3m3gI.rXDpDkGc/ebUNqHKJ22EhJrQJnuoe3yAf58QoZW6i")) //this hash inside the if() will be taken from the database when the user registered
            bcrypttext.Text = "equals";
        else
            bcrypttext.Text = "Not equal" + hash;
  }
}

对于php bcrypt,您可以查看此链接

eqqqjvef

eqqqjvef2#

我知道这是一个非常古老的问题,但是,我发现这是哈希和验证使用BCrypt创建的密码哈希。
https://github.com/as08/ClassicASP.Bcrypt
我能够通过导航到C:\Windows\Microsoft.NET\Framework\v4.0.30319并运行以下命令将DLL注册到TLB:

RegAsm path/to/dllfile/ClassicASP.Bcrypt.dll /tlb /codebase

从那里,我可以使用这个延迟绑定:

Dim Bcrypt As Object
Set Bcrypt = CreateObject("ClassicASP.Bcrypt")

Dim response

' Generate a hash with a default work factor of 10
response = Bcrypt.Hash("testpassword")
Debug.Print response

'' Verify a hash
response = Bcrypt.Verify("testpassword", "$2a$10$z7vfvfvHkOvJ6H1qMd8G9.kc38zptoqrqpsg/pwYTlmCd37OZ3sDK")
Debug.Print response

我能够验证使用nodejs bcryptjs包生成的密码。
我希望这对其他有同样问题的人有帮助

相关问题