暗号化されたデータを処理するクラスを作成しています。基本的には、データを暗号化してDBに格納し、取得時に復号化するために使用されます。
ここに私が書いたものがあります:
class dataEncrypt {
private $encryptString;
private $decryptString;
private $encryptionMethod;
private $key;
public function __construct() {
/* IMPORTANT - DONT CHANGE OR DATA WILL DAMAGE */
$this->key = sha1('StringToHash');
// Set the encryption type
$this->encryptionMethod = "AES-256-CBC";
}
// Generate the IV key
private function generateIV() {
$ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
return mcrypt_create_iv($ivSize, MCRYPT_RAND);
}
// Retrieve the key
private function retrieveKey() {
return $key;
}
// Encrypt a string
public function encryptString($string) {
// Return the encrypted value for storage
return openssl_encrypt($string, $this->encryptionMethod, $this->retrieveKey(), 0, $this->generateIV());
}
// Decrypt a string
public function decryptString($data) {
// return the decrypted data
return openssl_decrypt($data, $this->encryptionMethod, $this->retrieveKey(), 0, $this->generateIV());
return false;
}
}
保存する前に文字列を暗号化しようとすると、次の PHP 警告が表示されます。
警告: openssl_encrypt(): 渡された IV の長さは 32 バイトです。これは、選択された暗号で予想される 16 バイトよりも長く、/var/www/blahblah で切り捨てられています... 行 xxx
私はこれをグーグルで検索し、IV関数をグーグルで検索しましたが、どちらにもsweetheatが見つかりません。ここではどんなアドバイスも歓迎します。
ありがとう