公開鍵PHPデータ暗号化

ありふれた問題を解決する必要があります。キーを使用して、データ(文字列)を暗号化するためのphpアルゴリズムを記述します。
例:
$ data = "暗号化するテキスト";
$ pass = "サービスキー";
print my_encrypt($ data、$ pass)は、暗号化されたテキストを出力します。暗号化されたテキストは、キーを所有している場合のみ解読できます。
もちろん、フォーラムやウィキペディアに登って、急いでハブに急行することはありません。

かなりうろついて 私はウィキペディア調べました
関数mcryptがありますが、追加のライブラリの接続が必要です。多くの既成の標準アルゴリズムもありますが、PHPにはそれらの実装は適切ではありません(そうではありません)。 基本的に、それらはc(ここに例です )またはperlにあります。
PEAR用のモジュールもありますが、これも存在しません。
XORを使用した古典的な「大学」実装もあります。
関数x_crypt($データ、$キー)
{
$ strlen_key = strlen($キー);
$ sbuf = '';

for($ i = $ n = 0、$ strlen_data = strlen($ data); $ i <$ strlen_data; $ i ++)
{
if($ n> = $ strlen_key)$ n = 0;
$ sbuf。= chr(ord($ key [$ n ++])^ ord($ data [$ i]));
}

return sbuf;
}
暗号化と復号化は1つの機能によって実行されます。 明示的なマイナス:
元の行:こんにちは、仲間!!、キー:「Lol」
「Salt」キーを取得しようとすると、結果:
探している!
暗号文の一部が見えることがはっきりとわかるので、この実装はあまり良くありません。

暗号文の美しさは重要ではありませんが、さらにデザインを使用できます
関数x_hex_decode($ str)
{
for($ i = 0、$ sbuf = null、$ strlen = strlen($ str); $ i <$ strlen; $ i = $ i + 5)
{
$ sbuf。= chr(hexdec(substr($ str、$ i + 3、2)));
}
return sbuf;
}

関数x_hex_code($ str)
{
for($ i = 0、$ sbuf = null、$ strlen = strlen($ str); $ i <$ strlen; $ i ++)
{
$ sbuf。= chr(rand(65,70))。rand(0,9).chr(rand(65,70))。sprintf( '%X'、ord(substr($ str、$ i、1) ));
}
return sbuf;
}

関数decodex($データ、$キー)
{
return x_hex_decode(x_crypt(base64_decode(gzinflate($ data))、$ key));
}

関数codex($データ、$キー)
{
return gzdeflate(base64_encode(x_crypt(x_hex_code($ data)、$ key))、9);
}

x_hex_codeはランダムなゴミを追加しますが、x_hex_decodeはそれを削除し、base64_encodeとgzdeflateはペイロードを運ばないために結果を少し混乱させます。
ところで、検索中に、私は奇妙なメモを見つけました:
ロシア連邦では、暗号化ツールの使用に関連する商業活動には、強制的なライセンスが必要です。 2008年1月22日から2007年12月29日のロシア連邦政府の命令N 957「暗号化(暗号化)手段に関連する特定の種類の活動の認可に関する規定の承認について」
暗号化(暗号化)手段の配布
暗号化(暗号化)手段の維持
情報暗号化の分野でサービスを提供する
開発、暗号化(暗号化)手段の作成、情報および通信システムの暗号化(暗号化)手段を使用して保護

そのような(一見無害な)コードを見つけるのが難しいのはなぜですか?
そのようなアルゴリズム/クラス/関数を見つけるのを手伝ってください。
「ヘルプ」ブログのルールに従って、私は作業機能をレイアウトし、おそらく作業を説明することを約束します。
habrasocietyが問題を大げさで、または無関係であると考えると、このhabratopikは存在しないかのように消えます。
ありがとう

Source: https://habr.com/ru/post/J46081/


All Articles