/* * Copyright (C) 2019, HuntLabs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ module hunt.database.driver.postgresql.impl.util.MD5Authentication; import std.digest.md; /** */ class MD5Authentication { static string encode(string username, string password, byte[] salt) { scope MD5Digest md5 = new MD5Digest(); md5.put(cast(ubyte[])password); md5.put(cast(ubyte[])username); string str = toHexString!(LetterCase.lower)(md5.finish()); md5.put(cast(ubyte[])str); md5.put(cast(ubyte[])salt); return "md5" ~ toHexString!(LetterCase.lower)(md5.finish()); } unittest { string v = encode("postgres", "123456", cast(byte[])[0x3b, 0xd3, 0x50, 0x01]); assert(v == "md54b6f61eb0d581191ced4adbe41458d05"); } }