Sto riscontrando un problema con la mia classe di cifratura. A volte è molto veloce. A volte però è lento. il codice Im usando è il seguentecipher class e mcrypt_create_iv è lento a volte
class Cipher {
private $securekey, $iv;
function __construct() {
$this->securekey = hash('sha256','51(^8k"12cJ[6&cvo3H/[email protected]',TRUE);
$this->iv = mcrypt_create_iv(32);
}
function encrypt($input) {
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->securekey, $input, MCRYPT_MODE_ECB));
}
function decrypt($input) {
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->securekey, base64_decode($input), MCRYPT_MODE_ECB));
}
function storeIV() {
return $this->iv;
}
}
Ci sono dei suggerimenti sul perché questo può essere lento a volte e come potrei risolvere questo problema?
Come si carica il server quando viene eseguito rapidamente? Quando funziona lento? Che tipo di volte hai registrato? – Crontab
I carichi del server sono stati identici tra veloce/lento quando è veloce si sta caricando in circa 0,5 secondi quando è lento, posso aspettare per circa 2 minuti – bretterer
Solo una nota di sicurezza: credo che stai usando la tua classe Cipher per crittografare testo in chiaro multiplo. Normalmente un iv non dovrebbe essere riutilizzato, quindi è meglio che io pensi di generare l'IV nel metodo di crittografia piuttosto nel costruttore. Vedi http://stackoverflow.com/questions/11821195/use-of-initialization-vector-in-openssl-encrypt per vedere come memorizzarlo e ripristinarlo. Inoltre, nota che mcrypt_create_iv può essere molto lento se il sistema non ha abbastanza entropia. Personalmente uso openssl_random_pseudo_bytes. Inoltre, penso che ci sia l'argomento iv mancante nelle tue chiamate alla funzione mcrypt_encrypt/decrypt. –