2016-05-11 13 views
1

サードパーティのSOAPプロバイダを照会するためのチャレンジパスワードを作成するには、この関数が必要です。vb.netのMySqlの関数OLD_PASSWORD?

私は、C#で、この解決策を見つけた:

Simulating MySql OLD_PASSWORD in .NET or MS SQL?

しかしvb.netにそれを翻訳することは、スキルの私のレベル上記の方法のようです。

私の他のオプションは以下のとおりです。

  • はこの機能だけ
  • クエリMySQLの私は、この機能
  • を使用する必要があるたびに、C#でDLLを作成...

すべてそれらのうちのどれもが悪いように見える。誰もがどんな種類の助けを提供しても大いに感謝します。

働い

答えて

1
Public Function mysql_old_password(sPassword As String) As String 

    Dim result As UInt32() = New UInt32(1) {} 
    Dim nr As UInt32 = 1345345333, add As UInt32 = 7, nr2 As UInt32 = &H12345671 
    Dim tmp As UInt32 

    Dim password As Char() = sPassword.ToCharArray() 
    Dim i As Int32 

    For i = 0 To sPassword.Length - 1 
     If password(i) = " "c OrElse password(i) = ControlChars.Tab Then 
      Continue For 
     End If 

     tmp = AscW(password(i)) 
     nr = nr Xor (((nr And 63) + add) * tmp) + (nr << 8) 
     On Error GoTo 0 
     nr2 += (nr2 << 8) Xor nr 
     add += tmp 
    Next 
    Dim one As UInt32 = 1 
    result(0) = nr And ((one << 31) - 1) 
    Dim val As UInt32 = ((one << 31) - 1) 
    result(1) = nr2 And val 
    Dim hash As String = [String].Format("{0:X}{1:X}", result(0), result(1)) 
    Return hash.ToLower() 
End Function 
+0

、ありがとう!ただ、サイドノート:そこVB.netでOverflowExceptionがありますが、C#の同等に...この記事は、解決策を提案していない=> http://stackoverflow.com/questions/36311162/overflowexception-only-in-vb-net -n-in-c-sharp。私は 'あなたのVBプロジェクトの「整数オーバーフローのチェックを外し、」プロパティをオンにしませんでした。これは、プロジェクトの広いsetting.'だし、それが魅力のように働きました。 –