Yii verschlüsseln und entschlüsseln Passwort
Ich bin mit Yii CSecurityManager für die Passwort-Verschlüsselung:
$this->securityManager->encrypt('TEST', '1');
*der TEST ist der string zum verschlüsseln und 1 ist der Schlüssel.
aber wenn ich testen bevor ich Sie entschlüsseln, finde ich, dass sich der Wert ständig ändert.
for ($index = 0; $index < 10; $index++) {
$EncPassword = $this->securityManager->encrypt('TEST', '1');
echo $EncPassword;
}
ich verlasse mich auf diesen Wert in einem anderen Teil meiner Bewerbung...ich grub in die Kennwort verschlüsseln sehe ich, dass es in der Tat zufällig:
public function encrypt($data,$key=null)
{
$module=$this->openCryptModule();
$key=$this->substr($key===null ? md5($this->getEncryptionKey()) : $key,0,mcrypt_enc_get_key_size($module));
srand();
$iv=mcrypt_create_iv(mcrypt_enc_get_iv_size($module), MCRYPT_RAND);
mcrypt_generic_init($module,$key,$iv);
$encrypted=$iv.mcrypt_generic($module,$data);
mcrypt_generic_deinit($module);
mcrypt_module_close($module);
return $encrypted;
}
also meine Frage ist wie kann ich verschlüsseln, basiert auf einem Schlüssel und erhalten den gleichen Wert jedes mal?
Dank,
Danny
- Warum willst du Passwörter verschlüsseln?
- es ist ein Teil meiner app...es ist nicht nur das Passwort und ich brauche diese Funktionalität
- Aber warum? Es macht keinen Sinn, auch wenn Sie zum verschlüsseln der Daten gibt es keine Notwendigkeit für Sie zu erzeugen die gleiche Ausgabe jedes mal. Und sollten Kennwörter nicht verschlüsselt werden, Sie sollten zerlegt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Prinzip können Sie erstellen das gleiche verschlüsselte Text jedes mal. Verwenden Sie einfach eine statische IV, und Sie hätten es vollbracht. Es würde jedoch bedeuten, dass Sie Leck Informationen über die Passwörter. Identische Passwörter haben würde, den gleichen Chiffretext für verschiedene Benutzer.
Wenn Sie wirklich wollen, um die gleiche Chiffretext, voran, die ersten 16 bytes der hash über den Benutzernamen das Passwort und verschlüsseln Sie mit einem null-IV. Beachten Sie, dass dies immer noch austreten könnte, ein bisschen von Informationen über das Kennwort in der Zeit.
Beachten Sie, dass der Chiffretext Wert für andere bedeutet, als die Lagerung der Klartext ist eine sehr schlechte Idee im Allgemeinen.
mcrypt_enc_get_iv_size
anstelle vonmcrypt_create_iv
.