Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengesahan algoritma ringkasan dan senario aplikasinya dalam PHP

Pengesahan algoritma ringkasan dan senario aplikasinya dalam PHP

WBOY
WBOYasal
2023-08-07 12:29:06836semak imbas

Pengesahan algoritma Digest dan senario aplikasinya dalam PHP

Algoritma Hash ialah algoritma yang memetakan data dari sebarang panjang kepada ringkasan panjang tetap. Dalam bidang komputer, algoritma digest sering digunakan dalam senario seperti pengesahan integriti data, pengesahan kata laluan dan pengesahan. Artikel ini akan menumpukan pada algoritma ringkasan yang biasa digunakan dalam PHP dan senario aplikasinya dalam pengesahan, dan menyediakan contoh kod yang sepadan.

1. Algoritma ringkasan biasa
Algoritma ringkasan yang biasa digunakan dalam PHP termasuk MD5, SHA-1, SHA-256, dsb. Kami mengambil algoritma MD5 sebagai contoh untuk diperkenalkan.

  1. MD5 (Message Digest Algorithm 5) ialah algoritma cincang yang biasa digunakan yang "mencerna" input dari sebarang panjang ke dalam rentetan 128-bit panjang tetap. MD5 sering digunakan dalam senario seperti pengesahan kata laluan yang disimpan dan pengesahan integriti fail. Berikut ialah contoh kod yang menggunakan algoritma MD5 untuk mengira intisari rentetan:
$str = "Hello, World!";
$digest = md5($str);
echo $digest;

Hasil keluarannya ialah:

6cd3556deb0da54bca060b4c39479839
  1. SHA-1 (Secure Hash Algorithm 1) ialah algoritma cincang yang lebih selamat yang akan Memasukkan "ringkasan " sebagai rentetan 160-bit panjang tetap. SHA-1 biasanya digunakan dalam senario seperti algoritma tandatangan digital dan pengesahan integriti. Berikut ialah kod sampel yang menggunakan algoritma SHA-1 untuk mengira ringkasan fail:
$file = "example.txt";
$digest = sha1_file($file);
echo $digest;

Hasil output ialah:

2ef7bde608ce5404e97d5f042f95f89f1c232871

2. Senario aplikasi algoritma ringkasan

  1. Pengesahan integriti data
    Algoritma ringkasan boleh digunakan untuk mengesahkan integriti data Ini memastikan bahawa data tidak diganggu semasa penghantaran. Apabila pengirim menghantar data, ia mengira ringkasan data dan menambahkannya pada data. Selepas menerima data, penerima juga mengira ringkasan data dan membandingkannya dengan ringkasan yang dilampirkan. Jika kedua-duanya konsisten, ia bermakna data tidak diubah suai jika ia tidak konsisten, ia bermakna data mungkin telah diganggu. Berikut ialah contoh kod untuk pengesahan integriti data mudah:
$data = "Hello, World!";
$digest = md5($data); // 发送方计算摘要

// 将数据和摘要一起发送
sendData($data, $digest);

// 接收方接收数据并计算摘要
$dataReceived = receiveData();
$digestReceived = md5($dataReceived);

// 比对接收到的摘要和计算的摘要
if ($digestReceived == $digest) {
    echo "数据完整,未被篡改";
} else {
    echo "数据可能被篡改";
}
  1. Penyulitan kata laluan
    Algoritma digest boleh digunakan untuk menyulitkan kata laluan semasa menyimpannya. Apabila pengguna mendaftar, kata laluan pengguna dicerna dan ringkasan disimpan dalam pangkalan data. Apabila pengguna log masuk, kata laluan yang dimasukkan oleh pengguna dihadam dan dibandingkan dengan ringkasan yang disimpan dalam pangkalan data. Jika kedua-duanya konsisten, kata laluan adalah betul jika mereka tidak konsisten, kata laluan itu salah. Berikut ialah contoh kod mudah untuk penyulitan dan pengesahan kata laluan:
$password = "mypassword";

// 注册时加密密码并存储
$digest = md5($password);
saveDigestToDatabase($digest);

// 登录时验证密码
$passwordInput = $_POST["password"];
$digestSaved = getDigestFromDatabase();

$digestInput = md5($passwordInput);
if ($digestInput == $digestSaved) {
    echo "登录成功";
} else {
    echo "密码错误";
}

Di atas ialah pengenalan dan contoh aplikasi pengesahan algoritma ringkasan dalam PHP Algoritma ringkasan memainkan peranan penting dalam senario seperti pengesahan integriti data dan penyulitan kata laluan. Dalam aplikasi praktikal, kita boleh memilih algoritma ringkasan yang sesuai untuk digunakan mengikut keperluan tertentu. Perlu diingat bahawa menggunakan algoritma ringkasan sahaja untuk pengesahan mungkin melibatkan risiko keselamatan tertentu Oleh itu, pendekatan yang lebih biasa ialah menggabungkan algoritma ringkasan dengan kaedah pengesahan lain (seperti penyulitan simetri, penyulitan asimetri, dll.) untuk meningkatkan keselamatan. .

Atas ialah kandungan terperinci Pengesahan algoritma ringkasan dan senario aplikasinya 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