解密VB.Net(14)System.Security.Cryptography在PHP中加密密码以登录Android App

时间:2017-01-28 13:39:08

标签: php vb.net hash cryptography salt

我已经阅读了大量的样本和答案(甚至更多关于密码学的工作原理),但没有一个能够回答我的情况。我正在VB.Net中从桌面应用程序创建一个新用户。用户需要使用Android的一小部分来更新PC不可用的评估(不幸的是,Web应用程序不是一个选项)

我在桌面应用程序中没有问题,一切正常。我正在使用PHP页面来处理Android中的登录和其他数据相关的操作,也没问题。但是,我确实需要将密码更改为普通字符串等来读取密码。我需要让PHP读取保存的盐渍字符串(每个密码的不同盐 - 所有随机生成的,对于超过1个用户的盐不相同)链接到该特定密码。

我已经玩了一段时间的代码尝试在PHP中使用相同类型的函数,但我完全迷失了如何转换.net部分以在PHP中使用。

我的.net代码看起来像这样 -

Imports System.Security.Cryptography
Imports System.Text

Module modSecurity

Public Function GetSaltedHash(pw As String, salt As String) As String
    Dim tmp As String = pw & salt

    ' or SHA512Managed
    Using hash As HashAlgorithm = New SHA256Managed()
        ' convert pw+salt to bytes:
        Dim saltyPW = Encoding.UTF8.GetBytes(tmp)
        ' hash the pw+salt bytes:
        Dim hBytes = hash.ComputeHash(saltyPW)
        ' return a B64 string so it can be saved as text 
        Return Convert.ToBase64String(hBytes)
    End Using

End Function

Public Function CreateNewSalt(size As Integer) As String
    ' use the crypto random number generator to create
    ' a new random salt 
    Using rng As New RNGCryptoServiceProvider
        ' dont allow very small salt
        Dim data(If(size < 7, 7, size)) As Byte
        ' fill the array
        rng.GetBytes(data)
        ' convert to B64 for saving as text
        Return Convert.ToBase64String(data)
    End Using
End Function

在我的表单中,我将创建哈希密码和salt,如下所示 -

strPasswordNew = txtPassword.Text

        Dim NewPWD As String = strPasswordNew ''Actual password
        strSaltPWD = CreateNewSalt(SaltSize) ''Salt pwd
        Dim SaltPWDHash As String = GetSaltedHash(NewPWD, strSaltPWD) ''New   pwd now hashed

密码和salt在他们自己的字段下保存到数据库 - salt和pwd。

任何指针都将受到高度赞赏。

0 个答案:

没有答案