Szyfrowanie SSL
Program: podpisujący plik podpisem elektronicznym wcześniej utworzonym certyfikatem, oraz weryfikujący certyfikat bezpieczeństwa.
Podgląd:
Kod programu:
Główna forma:
Podpis
<form action="szyfr.php" method="GET">
Nazwa pliku:<input type=text name=nazwa><br>
<input type=submit value="Podpis">
</form>
<br><br>
Wefyfikacja
<form action="weryfikuj.php" method="GET">
Nazwa pliku:<input type=text name=nazwa><br>
<input type=submit value="Weryfikuj">
</form> Podpis:
<?php
$klucz= mcrypt_create_iv(8, MCRYPT_RAND);
$klucz = "12345678";
$jawny = $_GET['nazwa'];
$szyfrogram = mcrypt_ecb (MCRYPT_DES, $klucz, $jawny, MCRYPT_ENCRYPT);
echo $jawny;
echo '<br>';
echo $szyfrogram;
echo '<br><br>';
$plik = fopen("ukw_klucz_b.pem", "r");
$priv_key = fread($plik, 8192);
fclose($plik);
$klucz_pr = openssl_get_privatekey($priv_key);
$wiadomosc = $szyfrogram;
openssl_sign($wiadomosc, $podpis, $klucz_pr, "sha512");
echo $wiadomosc;
echo '<br>';
echo $podpis;
echo '<br><br>';
$plik_podpis = fopen("podpis.txt","w");
fputs($plik_podpis,$podpis);
fclose($plik_podpis);
$plik_szyfrogram = fopen("$jawny","w");
fputs($plik_szyfrogram,$szyfrogram);
fclose($plik_szyfrogram);
?> Weryfikacja:
<?php
$nazwapliku=$_GET['nazwa'];
$plik = fopen("$nazwapliku", "r");
$data_v=fread($plik, 8192);
fclose($plik);
$plik = fopen("podpis.txt", "r");
$podpis=fread($plik, 8192);
fclose($plik);
$plik = fopen("ukw_certyfikat.pem", "r");
$cert = fread($plik, 8192);
fclose($plik);
$pubkeyid = openssl_get_publickey($cert);
echo $data_v;
echo '<br>';
$ok = openssl_verify($data_v, $podpis, $pubkeyid, "sha512");
if($ok == 1) {
echo "poprawny";
} elseif ($ok == 0) {
echo "bledny";
} else {
echo "nie udalo sie sprawdzic";
}
?> Słowniczek pojęć:
Szyfrowanie to proces matematyczny, polegający na kodowaniu i dekodowaniu informacji. Liczba bitów (40, 128, 256) mówi o rozmiarze klucza użytego do szyfrowania. Tak jak w przypadku dłuższego hasła, dłuższy klucz ma więcej możliwości kombinacji. Dlatego ważnym parametrem, dla bezpieczeństwa zaszyfrowanych informacji, jest długość używanych kluczy. Im są dłuższe, tym trudniej jest odszyfrować informacje. Dla kluczy asymetrycznych (przy użyciu klucza publicznego) sugerowaną długością klucza jest obecnie 2048 bitów.