Statement on glibc/iconv Vulnerability

Random\Randomizer::getBytesFromString

(PHP 8 >= 8.3.0)

Random\Randomizer::getBytesFromString文字列からランダムにバイト列を取得する

説明

public Random\Randomizer::getBytesFromString(string $string, int $length): string

入力となる string から等確率に選択した、ランダムなバイト列を含む文字列を、 指定された length だけ返します。

特定のバイトが選ばれる確率は、 入力となる string に占める割合に比例します。 それぞれのバイトの頻度が同じ場合、 それぞれのバイトが選ばれる確率は等しくなります。

パラメータ

string

戻り値のために、バイト列が選択される文字列

length

バイト単位で返されるランダムな文字列の長さ。 1 以上でなければいけません。

戻り値

入力された string から取得したランダムなバイト列を、 指定された長さだけ含む文字列を返します。

エラー / 例外

例1 Random\Randomizer::getBytesFromString() の例

<?php
$randomizer
= new \Random\Randomizer();

printf(
"%s.example.com",
$randomizer->getBytesFromString('abcdefghijklmnopqrstuvwxyz0123456789', 16)
);
?>

上の例の出力は、 たとえば以下のようになります。

3zsw04eiubcf82jd.example.com

例2 2要素認証向けにランダムなコードを生成する

<?php
// The Secure engine is the default, but we make it explicit, because
// multi-factor codes are security sensitive.
$randomizer = new \Random\Randomizer(new \Random\Engine\Secure());

echo
implode('-', str_split($randomizer->getBytesFromString('0123456789', 20), 5));
?>

上の例の出力は、 たとえば以下のようになります。

11551-80418-27047-42075

例3 一様分布していない文字列から選択する

<?php
$randomizer
= new \Random\Randomizer();

echo
$randomizer->getBytesFromString('aaaaabcdef', 20);
?>

上の例の出力は、 たとえば以下のようになります。

fddacbeaaeaaacaaaaca

参考

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top