VB.NET编码字符串到drupal7兼容的密码字段字符串

时间:2019-01-31 13:28:02

标签: php vb.net encryption drupal sha512

希望有人可以提供帮助。

我必须从VB.NET应用程序/ ASP在MySQL Drupal环境中更新用户的详细信息。

因此,用户使用经典ASP更改密码,这将调用以VB.NET编写的.COM兼容DLL类。

我找到的说明是:(位于此站点上)

这是Drupal 7中的示例哈希:

“通过”:“ $ S $ Dxl65W9p07LfQU7jvy5CnsyDpMoLujiAgzy123khcg1OJi / P9pKS”

字符0-2是类型($ S $是Drupal 7)

字符3是基于此列表中char位置的log2轮数(X):'./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'因此,在我们的示例中,“ D”将映射为15 字符4-11是SALT 其余的是使用2 ^ X个回合的SHA512哈希。 然后使用base64将二进制结果转换为字符串。

$count = 1 << $count_log2;
$hash = hash($algo, $salt . $password, TRUE);
do { $hash = hash($algo, $hash . $password, TRUE);
} while (--$count);

由于不是任何密码学家或不了解PHP,我发现了一些可以进行SHA512加密的代码,并尝试将PHP解密为VB.NET-我认为这就是上面的PHP代码正在做的事情,即进行加密一个字符串。

Private Function EncryptSHA512Managed(ByVal ClearString As String) As String
       Dim uEncode As New UnicodeEncoding()
       Dim bytClearString() As Byte = uEncode.GetBytes(ClearString)
       Dim sha As New System.Security.Cryptography.SHA512Managed()
       Dim hash() As Byte = sha.ComputeHash(bytClearString)
       Dim Z as Integer = 0

       For Z = 1 To HowManyTimes - 1
           hash2 = sha.ComputeHash(hash)
           hash = hash2
       Next

       Return Convert.ToBase64String(hash2)
   End Function

因此,根据我对PHP解释的理解(并且我从未使用过PHP),我会做这样的事情:

   Private Function EncryptionStringForDrupal() As String
         Dim EncStr As String = "apassword"

 ' Going to use TestSale as my salt test.

         Return "$S$DTestSalt" & EncryptSHA512Managed("TestSalt" & EncStr)

   End Function

在示例PHP文本中使用“ D”,即15 ^ 2,它作为32,768个加密循环出现,而得到的drupal加密密码则为

$ S $ DTestSaltTjmIXDexvVOnQDA4ojamH2PFxVrfIKJLJBKNtclZaxs / LHiF8Wxx2kMb03qeo + FUK7prxEiKfToY50ZG0SQ3QA ==

但是它仍然是错误的-.-

0 个答案:

没有答案