1

とにかく、更新クエリを実行して、保存されたプレーンテキストのパスワードの列を、msaccess で md5+salt された列に変更することはできますか?

私はこれを試しました:

UPDATE TableName
SET Pass = CONCAT(MD5(CONCAT('salt', Pass)), ':salt');

しかし、もちろんうまくいきませんでした.users.Passのように最初にテーブル名を入力すると、ファイルが要求されます.そうしないと、アクセスが入力テーブルを見つけられないことがわかります. また、CONCAT関数がまったくないこともわかりません。

アクセス データベースを mysql データベースに変換して、顧客を magento インストールにインポートしようとしていますが、アクセスの経験があまりありません。ありがとう。

4

1 に答える 1

3

すべてのレコードをループし、各レコードのパスを設定する DAO ループを作成することをお勧めします。VBA 用の MD5 ハッシュ関数を作成するか、それを見つけるか、既に提案されているように SHA1 を使用する必要があります。

Access および Access/Jet/DAO SQL での連結は、アンパサンドまたはプラス記号を使用して行われます。

これは、SHA1 を使用して文字列をハッシュするための関数です。40 文字の 16 進文字列を返します。これが Magentos ハッシュ アルゴリズムと互換性があるかどうかはわかりません。

Public Function SHA1Hex(S As String) As String
    Dim asc, enc, bytes, outstr, pos
    'Borrow some objects from .NET (supported from 1.1 onwards)
    Set asc = CreateObject("System.Text.UTF8Encoding")
    Set enc = CreateObject("System.Security.Cryptography.SHA1CryptoServiceProvider")
    'Convert the string to a byte array and hash it
    bytes = asc.GetBytes_4(S)
    bytes = enc.ComputeHash_2((bytes))
    outstr = ""
    'Convert the byte array to a hex string
    For pos = 1 To LenB(bytes)
        outstr = outstr & LCase(Right("0" & Hex(AscB(MidB(bytes, pos, 1))), 2))
    Next
    SHA1Hex = outstr 'Returns a 40 byte/character hex string
    Set asc = Nothing
    Set enc = Nothing

End Function

DAO ループのコードは、SO でここにあります: Code to loop through all records in MS Access

于 2013-07-30T17:19:22.217 に答える