私は現在、閉ループの電子メール検証を必要とするプロジェクトに取り組んでいます。プロセスの一環として、ユーザーに送信されるリンクに追加できるランダムなハッシュ文字列を生成する必要があります。リンクをクリックすると、私のサイトに移動します。その時点で、アプリはハッシュを確認し、登録プロセスを完了します。私が使用しているすべてのハッシュについて:
hash('sha256', $string);
$string
ただし、このプロセスでは、ランダムな値をシードする必要があります。Zend Frameworkを利用でき、次のようなことをしようとしていました。
$crypt = new Zend_Filter_Encrypt_Mcrypt(array());
$hash = hash('sha256', $crypt->getVector());
私の質問は、これはランダムハッシュコードを生成するための実行可能なアルゴリズムですか?
これがZend_Filter_Encrypt_Mcrypt::setVector()
メソッドです(:を介して返される値を生成しますgetVector()
:
public function setVector($vector = null)
{
$cipher = $this->_openCipher();
$size = mcrypt_enc_get_iv_size($cipher);
if (empty($vector)) {
$this->_srand();
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && version_compare(PHP_VERSION, '5.3.0', '<')) {
$method = MCRYPT_RAND;
} else {
if (file_exists('/dev/urandom') || (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')) {
$method = MCRYPT_DEV_URANDOM;
} elseif (file_exists('/dev/random')) {
$method = MCRYPT_DEV_RANDOM;
} else {
$method = MCRYPT_RAND;
}
}
$vector = mcrypt_create_iv($size, $method);
} else if (strlen($vector) != $size) {
require_once 'Zend/Filter/Exception.php';
throw new Zend_Filter_Exception('The given vector has a wrong size for the set algorithm');
}
$this->_encryption['vector'] = $vector;
$this->_closeCipher($cipher);
return $this;
}