Piszę klasę do obsługi zaszyfrowanych danych, w zasadzie będzie ona używana do szyfrowania danych, które mają być przechowywane w DB, a następnie do odszyfrowania ich przy pobieraniu.problemy z uzyskaniem openssl_encrypt do pracy
Oto co mam napisane:
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;
}
}
Usiłuję zaszyfrować ciąg przed przechowywania i otrzymuję następujące ostrzeżenie PHP:
Warning: openssl_encrypt(): IV przekazywane jest 32 bajtów, który jest dłuższy niż 16 oczekiwanej przez wybranego szyfru, obcinanie w/var/www/blahblah ... na linii xxx
mam google to, Ive googled IV funkcje, nie mogę znaleźć sweetheat na obu. Wszelkie rady są tutaj mile widziane.
Dzięki
Twój kod nie może pracować. Musisz przekazać IV wraz z zaszyfrowanym tekstem. – SLaks
Zmieniłem go w ten sposób: \t \t // Szyfrowanie ciąg \t \t public function encryptString ($ string) { \t \t \t $ ivSize = mcrypt_get_iv_size (MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC); \t \t \t $ iv = mcrypt_create_iv ($ ivSize, MCRYPT_RAND); \t \t \t // Zwraca wartość zaszyfrowanego przechowywania \t \t \t powrót openssl_encrypt ($ string, $ this-> encryptionMethod, $ this-> retrieveKey(), 0, $ iv); \t \t} \t \t Ale nadal mam ten sam błąd? Nie wiem, co robić, a dokumentacja jest bliska nieistniejącej ... – ThePHPUnicorn
musi to być 'MCRYPT_RIJNDAEL_128' – CIRCLE