hash_hmac() 関数について読んだところ、パスワードを DB に保存するために使用しようとしました:
<?php
$dsn = 'mysql:host=localhost;dbname=test';
$username = 'root';
$pass = 'password';
$conn = new PDO($dsn, $username, $pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->setAttribute(PDO::ATTR_PERSISTENT, TRUE);
$password = '123MonyeTSahuR456';
$p = addslashes(hash_hmac('sha256', $password, '13#slP3mK;"dA$@m', TRUE));
$query = "INSERT INTO table_one VALUES(NULL, :password)";
try
{
$pdo = $conn->prepare($query);
$pdo->bindValue(':password', $p);
if($pdo->execute())
{
echo $pdo->rowCount();
}
else
{
echo 'fail';
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
DB の詳細:
id INT NOT NULL AUTO INCREMENT
password VARBINARY(32) NOT NULL
その後、DB を手動でチェックし、BLOB を含む行を見つけました (これまで VARBINARY または BLOB データ型で作業/使用したことがないので、これが初めてです)
1行が存在するので、行を選択しようとします:
$query = "SELECT * FROM table_one WHERE password = :password";
によって返される値pdo->rowCount()
は 0 です。探しているパスワードが見つかりません。誰か教えてください。これを修正するには?
別の詳細:
PHP バージョン: 5.4
OS : Ubuntu 12.04 64 ビット ありがとう