rand()を使用しない暗号化パスワードの擬似ランダム生成

テーブル

どういうわけか、自分のニーズに合った安全なパスワードジェネレーターを独自に実装したかったのです。 このスクリプトは、mcryptライブラリを使用して彼の小さなPHPプロジェクト用に作成されました。 アクションの原則自体は私にとって興味深いものであるため、このコードを共有することにしました。



実装のパフォーマンス特性:

-文字範囲:Aa — Zzおよび0-9
-パスワードの最大長:300文字
-rand()は使用されません
-パスワードは、ブロック結合モード(CBCモード)の対称ブロックアルゴリズムSerpent-256を介して生成されます。
秘密を変更する初期ベクトル、秘密鍵、ランダムな文字の長い秘密ブロック
-SHA256を使用するベクトルを変更するには
-3つのファイル:generator.php、counter.txt、iv.txt
-美のためのカウンターがあります

2つの機能:

make_password(int length); // , 22 = 128 bit
print_password(int length); //


擬似コード: base64(蛇(キー、iv、プレーンテキスト、cbc))

これが、プロセスの最も重要な部分であるパスワードの実行方法です。
(初期ベクトルと他のすべてはどのように変化しますか
PHPコードでご覧ください。
コード内の興味深い場所にコメントがあります。)

完全なジェネレーターコード、htmlタグを含む:

http://www.copypastecode.com/8660/

generator.phpは、パスワードをすばやくコピーするためのこのようなテーブルを作成します。

テーブル


これはすべて、暗号化されたSSLチャネルを介してサーバー上で機能するため、パスワードは自分だけに表示されます。
私はあなたにリンクを差し上げません-私は貪欲な妄想者です、まだ私をハックしてトラフィックを奪います。

このコードを使用する場合は、すべての値(キー、ベクトル、テキスト、およびカウンター)を変更します。 私のベクトルとカウンターはファイルに保存されます。データベース(MySQLなど)または他の場所に自分のベクトルとカウンターを保存できます。 ローカルマシンまたは安全なチャネルを介してパスワードを生成することをお勧めします。 私の意見では、単純なhttpを介してこのコードをパブリックドメインに置くことは非常に愚かです。

このトピックは、招待を受けるという貪欲で利己的な目的のために書かれました。 招待して、別の4スレッド、Chesna-Chesnaを書きます。

招待してくれたクールなlyxsus hubramanに感謝します。

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


All Articles