私は実際にコードをダンプして回答を期待していませんが、これは後でデータベースに保存された値と比較するためにパスワードをハッシュする非常に長い関数です。PHPの同等のパスワード次の.NETコードのハッシュ
私は人々がPHPのmd5()
関数で達成できるものを再現しようと時間を無駄にした記事を見ました。
任意の暗号の知識を持つ誰かがPHPで以下の効果を達成するためにPHPと同等の知っている場合そのため、私は思ったんだけど:
internal static string GenerateEncryptedPassword(string password, string salt, int iterationCount)
{
byte[] passwordBytes = Encoding.UTF8.GetBytes(password);
byte[] saltBytes = Encoding.UTF8.GetBytes(salt);
byte[] iterationCountBytes = BitConverter.GetBytes(iterationCount);
int derivedLength = passwordBytes.Length + saltBytes.Length;
byte[] passwordSaltBytes = new byte[derivedLength];
byte[] pbkdf2Bytes;
string encryptedString;
for (int i = 0; i < passwordBytes.Length; i++)
{
passwordSaltBytes[i] = passwordBytes[i];
}
for (int i = 0; i < saltBytes.Length; i++)
{
passwordSaltBytes[passwordBytes.Length + i] = saltBytes[i];
}
using (Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(password, passwordSaltBytes, iterationCount))
{
pbkdf2Bytes = pbkdf2.GetBytes(derivedLength + iterationCountBytes.Length);
}
using (SHA512 sha512 = new SHA512Managed())
{
byte[] hashBytes = sha512.ComputeHash(pbkdf2Bytes);
byte[] hashSaltBytes = new byte[hashBytes.Length + saltBytes.Length];
for (int i = 0; i < hashBytes.Length; i++)
{
hashSaltBytes[i] = hashBytes[i];
}
for (int i = 0; i < saltBytes.Length; i++)
{
hashSaltBytes[hashBytes.Length + i] = saltBytes[i];
}
encryptedString = Convert.ToBase64String(hashSaltBytes);
}
return encryptedString;
}
それが何かを変更した場合、私はLaravelを使用しています。.. 。
はどんな指導をありがとう
私は、暗号化を嫌い:D
$user = \App\User::all();
$salt = strtolower($user[2]->Salt);
$password = '[email protected]$$W0rd';
$dbPassword = $user[2]->Password;
$iterations = 10000;
echo openssl_pbkdf2($password, $salt, 44, $iterations, 'sha512');
私の同僚がすでに行っていることを再現しなければならないので、何も使用できません。同じハッシュを出力する必要があります。私は確かにここに投稿する前にいくつかのことを試しましたが、もう一度見ていきます。ありがとうございます。 – Anaconda
SHA512を使用してpassword_hash()を試すこともできます。そのオプションを確認してください! – delboy1978uk
また、私はオプションを見てきましたが、私は明らかに十数個の組み合わせとオーバーロードを実行しました。そのため、PHPで便利にすばやく行う方法を誰かが知っていることを期待して、ここにコードを貼り付けることにしました。 – Anaconda