ホームページ >バックエンド開発 >PHPチュートリアル >PHP 可逆暗号化および復号化アルゴリズム プログラム コード_PHP チュートリアル

PHP 可逆暗号化および復号化アルゴリズム プログラム コード_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:11:10824ブラウズ

一般的に使用されている md5 アルゴリズムは理論的には不可逆ですが、md5 を計算できる強力な方法はあります。複雑さに応じて時間がかかりますが、データが暗号化されて送信された後に復号化できることを期待する場合もあります。以下の機能を提供します。

ほとんどのパスワード暗号化には、md5、sha1、その他の方法を使用できます。データ漏洩は効果的に防ぐことができますが、これらの方法は復元を必要としないデータ暗号化にのみ適用されます。

復元する必要がある情報については、可逆的な暗号化および復号化アルゴリズムを使用する必要があります。

次の PHP 関数のセットは、この暗号化と復号化を実装する方法です:

暗号化アルゴリズムは次のとおりです:

コードは次のとおりです コードをコピー
関数暗号化($data, $key)
{
$key = md5($key);
$x = 0;
$len = strlen($data);
$l = strlen($key);
for ($i = 0; $i {
if ($x == $l)
{
$x = 0;
}
$char .= $key{$x};
$x++;
}
for ($i = 0; $i {
$str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
}
Base64_encode($str);を返します
}

復号アルゴリズムは次のとおりです:

コードは次のとおりです コードをコピー
関数復号化($data, $key)
{
$key = md5($key);
$x = 0;
$data =base64_decode($data);
$len = strlen($data);
$l = strlen($key);
for ($i = 0; $i {
if ($x == $l)
{
$x = 0;
}
$char .= substr($key, $x, 1);
$x++;
}
for ($i = 0; $i {
If (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))
{
$str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
}
その他
{
$str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1));
}
}
$str;
を返します }

上記の暗号化と復号化のプロセスはすべて、暗号化キー (つまり、パラメーター $key) の使用を必要とします。

コードは次のとおりです コードをコピー

$data = 'PHP 暗号化および復号アルゴリズム' // 暗号化された情報
; $key = '123' // キー
; $encrypt = encrypt($data, $key);
$decrypt = 復号化($encrypt, $key);
echo $encrypt, "n", $decrypt;

上記は次のような結果を出力します:

gniCSOzZG+HnS9zcFea7SefNGhXF
PHP 暗号化および復号化アルゴリズム

上記の結果からわかるように、これは復元する必要がある一部のデータを暗号化するために使用できる、可逆的な暗号化および復号化アルゴリズムのセットです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/629603.html技術記事一般的に使用されている md5 アルゴリズムは理論的には不可逆ですが、md5 を計算できる強力な方法はあります。複雑さに応じて時間がかかるだけですが、場合によっては...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。