/ / CI szyfruje i odszyfrowuje - codeigniter, encryption

Szyfrowanie i odszyfrowywanie CI - kodowanie, szyfrowanie

Rozumiem, że klasa szyfrowania generuje różne wyniki za każdym razem, gdy zaszyfrowane jest to samo słowo / ciąg znaków, na przykład $this->encrypt->encode("word") przebiegł pięć razy wytworzył pięć różnych zaszyfrowanych ciągów.

Jak mogę odwołać się do zaszyfrowanego ciągu w zapytaniu DB, jeśli za każdym razem dzwonię $this->encrypt->encode("word") daje mi coś innego?

Zapytany w inny sposób, czy jest coś, co mogę zaszyfrować, nie ma wartości losowej, więc za każdym razem, gdy zaszyfruję, otrzymuję to samo wyjście dla tego samego wejścia?

Odpowiedzi:

2 dla odpowiedzi № 1

Kodowanie Base64 nie jest szyfrowaniem (odnosząc się do własnej odpowiedzi). Nie używałem codeigniter, ale zauważam na jego strony doc to pozwala:

$ this-> encrypt-> set_mode ();

Można szyfrować w trybie ECB (MCRYPT_MODE_ECB) dla deterministyczne szyfrowanie gdzie te same dane zawsze szyfrują do tego samego zaszyfrowanego tekstu. W ten sposób zaszyfrujesz swój ciąg wyszukiwania i będzie on odpowiadał zaszyfrowanym danym w bazie danych.

Jest to uważane za słabość trybu EBC, ale w tym przypadku deterministyczne zachowanie może być tym, czego chcesz.


1 dla odpowiedzi nr 2

Myślę, że base64_encode ($ str) jest tym, czego szukam.


0 dla odpowiedzi № 3

ten kod działa tylko na php 5.5 lub wyżej

echo password_hash(variable, PASSWORD_DEFAULT);

Pierwszym parametrem jest ciąg hasła, który musi zostać zaszyfrowany, a drugi parametr określa algorytm, który powinien zostać użyty do wygenerowania skrótu.

Domyślnym algorytmem jest obecnie bcrypt, ale silniejszy algorytm może zostać dodany jako domyślny później w pewnym momencie w przyszłości i może generować większy ciąg. Jeśli używasz PASSWORD_DEFAULT w swoich projektach pamiętaj, aby zapisać hasz w kolumnie, której pojemność przekracza 60 znaków. Ustawienie rozmiaru kolumny na 255 może być dobrym wyborem. Możesz również użyć PASSWORD_BCRYPT jako drugi parametr. W takim przypadku wynik zawsze będzie mieć długość 60 znaków.

i aby sprawdzić hash hasła, tutaj jest składnia

<?php
if (password_verify($oldpassword, $hash)) {
// Success!
// the first parameter is your password that"s not yet encrypted, the secode is your password  encrypted
}
else {
// Invalid password
}