Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Dapatkan Kata Laluan Disulitkan dengan Selamat dalam PHP?

Bagaimanakah Saya Boleh Dapatkan Kata Laluan Disulitkan dengan Selamat dalam PHP?

DDD
DDDasal
2024-12-27 12:52:13942semak imbas

How Can I Securely Retrieve Encrypted Passwords in PHP?

Pendapatan Kata Laluan Selamat: Melangkaui Penyulitan dan Pencirian

Walaupun penting untuk memastikan keselamatan data, menyimpan maklumat sensitif seperti kata laluan menimbulkan cabaran unik. Menyulitkannya untuk mendapatkan semula kemudian mungkin kelihatan berlawanan dengan intuisi, kerana intipati penyulitan terletak pada menjadikan data tidak boleh diakses. Walau bagaimanapun, strategi penyulitan dan penyahsulitan yang ditakrifkan dengan baik boleh mengatasi halangan ini.

Dalam PHP, anda tidak boleh menggunakan fungsi cincang seperti bcrypt untuk kata laluan kerana ia merupakan penukaran sehala, menjadikan pengambilan semula mustahil. Untuk menangani perkara ini, pertimbangkan untuk menggunakan gabungan kaedah penyulitan dan perebutan yang membolehkan anda mendapatkan semula kata laluan asal sambil mengekalkan keselamatannya.

Penyelesaian Penyulitan Komprehensif

Untuk selamat menyulitkan dan menyahsulit kata laluan, pertimbangkan PHP berikut kod:

$key = 'password to (en/de)crypt';
$string = ' string to be encrypted ';
// Encryption
$iv = mcrypt_create_iv(
    mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC),
    MCRYPT_DEV_URANDOM
);

$encrypted = base64_encode(
    $iv .
    mcrypt_encrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        $string,
        MCRYPT_MODE_CBC,
        $iv
    )
);
// Decryption
$data = base64_decode($encrypted);
$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));

$decrypted = rtrim(
    mcrypt_decrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)),
        MCRYPT_MODE_CBC,
        $iv
    ),
    ""
);

Pertimbangan Penting

Adalah penting untuk ambil perhatian bahawa kod yang disediakan menyulitkan maklumat tetapi tidak mengesahkan teks sifir untuk mengelakkan gangguan . Untuk keselamatan yang dipertingkatkan, adalah disyorkan untuk tidak bergantung semata-mata pada penyulitan yang tidak disahkan.

Sumber Tambahan

Terokai sumber berikut untuk maklumat lanjut cerapan:

  • https://stackoverflow.com/a/30189841/2224584
  • https://stackoverflow.c om/a/30166085/2224584
  • https://stackoverflow.com/a/30159120/2224584

Awas: Keselamatan Kunci Penyulitan

Jangan sekali-kali menggunakan "kata laluan" sebagai kunci penyulitan; kunci penyulitan hendaklah rentetan rawak.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Kata Laluan Disulitkan dengan Selamat dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn