/ / CI šifrovanie a dešifrovanie - kódovanie, šifrovanie

CI šifrovať a dešifrovať - ​​kódovanie, šifrovanie

Mám pocit, že trieda šifrovania produkuje rozdielny výstup zakaždým, keď je rovnaké slovo / reťazec zašifrované, napríklad $this->encrypt->encode("word") päťkrát by produkovalo päť rôznych kódovaných reťazcov.

Ako môžem pri každom volaní odkazovať na šifrovaný reťazec v dotaze DB $this->encrypt->encode("word") dáva mi niečo iné?

Opýtal sa iným spôsobom, je tam niečo, čo môžem zašifrovať s tým, že nemá náhodnú hodnotu tak, že zakaždým, keď som zašifrovať dostanem rovnaký výstup pre rovnaký vstup?

odpovede:

2 pre odpoveď č. 1

Kódovanie Base64 nie je šifrovanie (odkazujúc na vašu vlastnú odpoveď). Nevyužil som kodér, ale všimol som si jeho doc stránky umožňuje:

$ This-> encrypt-> set_mode ();

Môžete zašifrovať režim ECB (MCRYPT_MODE_ECB) deterministické šifrovanie kde rovnaké údaje vždy zašifrujú na rovnaký ciphertext. Týmto spôsobom zašifrujete vyhľadávací reťazec a bude zodpovedať zašifrovaným údajom v databáze.

To je považované za slabosť režimu ECB, ale v tomto prípade môže byť deterministické správanie to, čo chcete.


1 pre odpoveď č. 2

Myslím, že base64_encode ($ str) je to, čo hľadám.


0 pre odpoveď č. 3

tento kód funguje iba na php 5.5 alebo vyššom

echo password_hash(variable, PASSWORD_DEFAULT);

Prvým parametrom je reťazec hesla, ktorý sa musí hashovať a druhý parameter určuje algoritmus, ktorý by sa mal použiť na generovanie hash.

Predvolený algoritmus je momentálne bcrypt, ale silnejší algoritmus môže byť pridaný ako predvolený neskôr v určitom bode v budúcnosti a môže generovať väčší reťazec. Ak používate PASSWORD_DEFAULT Vo svojich projektoch nezabudnite uložiť haš do stĺpca, ktorý má kapacitu viac ako 60 znakov. Nastavenie veľkosti stĺpca na 255 môže byť dobrou voľbou. Môžete tiež použiť PASSWORD_BCRYPT ako druhý parameter. V tomto prípade bude výsledok vždy dlhý 60 znakov.

a skontrolovať heslo hash tu je syntax

<?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
}