PHPがランダムコードを生成する構想と方法の実例の探求
3904 ワード
PHPがランダムコードを生成する考え方と方法を例に挙げた.皆さんの参考にしてください.具体的には以下の通りです.
背景
今日は退屈なので、友达は5ビットのランダムコードを生成する関数を書かせて、要求:数字、アルファベットの大文字と小文字を含んで、コードはできるだけ短いです.
問題を解く構想.
(1) . 第一の考え方
いずれも、イメージにマッチしたASCIIコードをランダムに読み取る方法であり、ここでは参考にする方法を提供することができる.
(2) . 第二の考え方
1.使用可能なすべての文字を含むランダム配列の定義
ヒント:このようなコードは、1、I、l、0、o、O、9、qなどの曖昧な文字を除去することを提案する.
短所:5文字が重複していない
2.上記1の配列形式を比較し、設計文字列形式は以下のように参照する.
(3) . 第三の考え方
発見された新しい考え方は、暗号化アルゴリズムを使用して取得できます.
ヒント:
発見:
エクステンション
PHPの設計に対して、一般的なランダムコードは検証コード、共有コードの生成に用いることができ、ビット数の制限に重点を置き、必要に応じて、このランダムコードの一意性を保証する.
ユーザーのパスワード暗号化ストレージに使用できますが、データベースが移行する場合はjavaまたは.Net言語は適用しにくい.
参考記事:
https://www.jb51.net/article/71635.htm
PS:ここでは、2つの機能に似たオンラインツールを提供します.参考にしてください.
オンライン乱数/文字列生成ツール:http://tools.jb51.net/aideddesign/suijishu
オンラインランダム文字/ランダムパスワード生成ツール:http://tools.jb51.net/aideddesign/rnd_password
PHPの関連内容についてもっと興味のある読者は、「PHP数学演算技術総括」、「php文字列(string)用法総括」、「PHPデータ構造とアルゴリズム教程」、「phpプログラム設計アルゴリズム総括」、「PHP配列(Array)操作技術大全」及び「phpよく見られるデータベース操作技術総括」を参照してください.
ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.
背景
今日は退屈なので、友达は5ビットのランダムコードを生成する関数を書かせて、要求:数字、アルファベットの大文字と小文字を含んで、コードはできるだけ短いです.
問題を解く構想.
(1) . 第一の考え方
いずれも、イメージにマッチしたASCIIコードをランダムに読み取る方法であり、ここでは参考にする方法を提供することができる.
function get_rand_ascii($pw_length = 5){
$randpwd = '';
for ($i = 0; $i < $pw_length; $i++) {
$randpwd .= chr(mt_rand(33, 99));
}
return $randpwd;
}
(2) . 第二の考え方
1.使用可能なすべての文字を含むランダム配列の定義
function getRandomString($length=5) {
//
$chars = array(
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",
"3", "4", "5", "6", "7", "8", "9"
);
$charsLen = count ( $chars ) - 1;
shuffle ( $chars ); //
$output = "";
for($i = 0; $i < $length; $i ++) {
$output .= $chars [mt_rand ( 0, $charsLen )];
}
return $output;
}
ヒント:このようなコードは、1、I、l、0、o、O、9、qなどの曖昧な文字を除去することを提案する.
短所:5文字が重複していない
2.上記1の配列形式を比較し、設計文字列形式は以下のように参照する.
function get_pass( $length = 8 ) {
// ,
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|';
$password = '';
for ( $i = 0; $i < $length; $i++ ) {
//
// substr $chars ;
// $chars
// $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
$password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
}
return $password;
}
(3) . 第三の考え方
発見された新しい考え方は、暗号化アルゴリズムを使用して取得できます.
public function getRand(){
$rand = rand(10000,100000);
$str = substr(base64_encode($rand), 0, 5);
return $str;
}
ヒント:
md5()
関数は数字と小文字のアルファベットのみ発見:
base64_encode()
は要求を満たすことができるエクステンション
PHPの設計に対して、一般的なランダムコードは検証コード、共有コードの生成に用いることができ、ビット数の制限に重点を置き、必要に応じて、このランダムコードの一意性を保証する.
password_hash
の使用(PHP>5.5)ユーザーのパスワード暗号化ストレージに使用できますが、データベースが移行する場合はjavaまたは.Net言語は適用しにくい.
$password = 'password1232456';//
// BCRYPT
// ,
//$db_pass = '$2y$10$2vJJC.rb/swAUnTfc9B94.l/ix75kiZHvOZFpu0Dd8uzp07YWlj4q';
$db_pass = password_hash($password, PASSWORD_BCRYPT);
if (password_verify($password , $db_pass)){
echo " ";
}else{
echo " ";
}
参考記事:
https://www.jb51.net/article/71635.htm
PS:ここでは、2つの機能に似たオンラインツールを提供します.参考にしてください.
オンライン乱数/文字列生成ツール:http://tools.jb51.net/aideddesign/suijishu
オンラインランダム文字/ランダムパスワード生成ツール:http://tools.jb51.net/aideddesign/rnd_password
PHPの関連内容についてもっと興味のある読者は、「PHP数学演算技術総括」、「php文字列(string)用法総括」、「PHPデータ構造とアルゴリズム教程」、「phpプログラム設計アルゴリズム総括」、「PHP配列(Array)操作技術大全」及び「phpよく見られるデータベース操作技術総括」を参照してください.
ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.