目次
擬似ランダム文字生成
擬似ランダム整数の生成
生成ソース
例外状況
概要
ホームページ バックエンド開発 PHPの問題 PHP で暗号化擬似乱数ジェネレーターを使用する方法

PHP で暗号化擬似乱数ジェネレーターを使用する方法

May 27, 2021 pm 05:46 PM
php

この記事では、PHP で暗号化された擬似乱数ジェネレーターを使用する方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

PHP で暗号化擬似乱数ジェネレーターを使用する方法

今日は、PHP の暗号化擬似乱数ジェネレーター (CSPRNG 拡張機能) を紹介します。乱数の生成は実際には非常に単純で、 rand() 関数または mt_rand() 関数を使用するだけですが、今日説明するのは、より複雑なアルゴリズムを使用する乱数生成器のセットです。 rand() は推奨されなくなりました。mt_rand() はより高速に生成され、現在では主流の関数です。暗号化された擬似乱数生成関数は暗号的に安全ですが、mt_rand() よりもわずかに遅くなります。オペレーティング システムのいくつかの機能に依存する必要がありますが、これについては後で説明します。

この暗号化拡張機能は PHP7 に統合されており、特別なインストールは必要ありませんが、PHP7 より前のバージョンの場合は、拡張機能を個別にインストールする必要があります。テスト時に以下で説明する関数が見つからない場合は、現在の PHP バージョンを確認してください。

擬似ランダム文字生成

var_dump(bin2hex(random_bytes(5)));
// string(10) "f28dc2bdd5"
var_dump(random_bytes(5));
// string(5) "�"��"
ログイン後にコピー

random_bytes() 各呼び出しでは、異なる内容のバイナリ文字列が生成され、パラメータはバイナリのバイト長です。直接取得したバイナリ データは形式が文字化けしているため、通常は bin2hex() を使用してバイナリを理解できる 16 進形式の文字列に変換する必要があります。ただし、変換後の 16 進数の文字長は、設定した文字長の 2 倍になります。この関数の関数は、安全なユーザー パスワード ソルト、キー キーワード、または初期化ベクトルを生成できます。

random_bytes() 各呼び出しは、異なる内容の文字列を生成します。パラメータは文字長のランダムな文字です。ここでは 5 を渡し、10 文字を返します。このパラメータは次の数であることがわかります。実際に返されるのはバイト数であり、1 文字が 2 バイトを占める戻り形式に対応します。あるいは、2 倍のパラメーターを返すことを覚えておくこともできます。この関数の役割としては、安全なユーザー パスワード ソルト、キー キーワード、または初期化ベクトルを生成できます。

擬似ランダム整数の生成

var_dump(random_int(100, 999));
var_dump(random_int(-1000, 0));
// int(900)
// int(-791)
ログイン後にコピー

整数の生成の場合はさらに簡単で、ランダムな整数の範囲であるrandom_int()関数に2つのパラメータを指定するだけです。実際、使い方は mt_rand() と同じです。

生成ソース

上記 2 つの暗号化擬似乱数関数の生成ソースは、次のようにオペレーティング システムによって異なります。

  • Windows システムの場合の場合は、CryptGenRandom() 関数が使用されます。 7.2.0 以降、Linux システムで CNG-API

  • を使用する場合、Linux getrandom(2) システム コール

  • が使用されます。 /dev/urandom を使用します

  • それ以外の場合は例外がスローされます

例外状況

これら 2 つ関数にも対応するものがあり、例えば上記で発生元が見つからなかった場合には例外がスローされますが、もちろんこれ以外にも例外が発生する要因はあります。

  • 適切なランダム性のソースが見つからない場合は、例外がスローされます。

  • 指定されたパラメータが無効な場合は、TypeError が発生します

  • 指定されたバイト長が無効な場合、エラーが発生します

概要

今日の内容は非常に簡単です。また、random_bytes() 関数を使用すると、自分でランダムにソルトを生成する関数を記述する必要はなくなります。パスワード ソルティングに関する記事と同様に、パスワードの「ソルティング」とは何ですか?ユーザーパスワードを安全に「ソルト」するにはどうすればよいでしょうか?ランダム文字生成関数(generateSalt)は基本的にこれで置き換えることができます。とても得した気がしませんか? 学びのスピードは決して止まりません。これからも一緒にもっと面白いコンテンツを探索していきましょう! !

テスト コード:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202007/source/PHP%E7%9A%84%E5%8A%A0%E5%AF%86%E4%BC%AA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90%E5%99%A8%E7%9A%84%E4%BD%BF%E7%94%A8.php
ログイン後にコピー

推奨学習: php ビデオ チュートリアル

以上がPHP で暗号化擬似乱数ジェネレーターを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles