PHPでランダムなintと文字列を作成したいので、mcrypt_create_ivを使うことにしました。マニュアルではランダム性のために/ dev/randomと/ dev/urandomを使用していますが、この関数を使用してランダムなIntとStringを生成する方法に関する簡単なチュートリアルは見つかりません。私はいくつかのコードを試しましたが、この機能は私に読めない文字を与えます。ですから、私がそれをいかに適切に使用できるかの簡単な例を教えてください。あなたは乱数を生成したい場合はphp using mcrypt_create_iv
答えて
、mt_rand
使用:
$random = mt_rand(0, 999999);
$random_string = sha1($random);
mcrypt_create_iv
がで使用されている:あなたは、文字列をしたい場合は、ハッシュ関数による結果の整数を渡すことができ
$random = mt_rand(0, 999999);
暗号化。それはあなたの要求に全く無関係です。その後、10
は長さである
$random = file_get_contents('/dev/urandom', false, null, 0, 10);
...、変換:
あなたはセキュリティコンポーネント(塩、パスワードなど)、そのよう/dev/urandom
から読んでランダムな文字列を使用するように探しているなら;
$string = bin2hex($random);
$number = current(unpack('L', $random));
mt_randは安全ではありません!!!!!!!!!!!!!私は/ dev/randomまたは/ dev/urandomを使用したいと思います。 – Irakli
Googleとあなたはphp gurusがそれが安全な方法ではないと言っています。唯一の安全な方法は、/ dev/urandomを使用することです。 – Irakli
@ user1228636:安全性は相対的です。あなたが望むものは言及していないので、そうしないと、あなたの基準にしたがって安全であるかどうかは気にしません。あなたは乱数が欲しいですか? 'mt_rand'を使います。 '/ dev/urandom'から読み込みたいだけです。 – netcoder
ランド(int型$分、int型の$ max)の乱数用と文字列は、乱数のMD5またはSHA1ハッシュを取るためにこれを使用します。このような
私は/ dev/urandomを使用したいのは、最も安全な方法だからです。その方法はまったく安全ではありません – Irakli
まず、どのようにランダムな文字列を使用したいのですか。何のために使用しますか?パスワード用の塩を生成する場合は、この関数を使用してuniqid()またはmt_rand()によって生成されたものよりも優れたランダムな文字列を生成できます。 Secure Password Hashingを参照し、mcrypt_create_iv()を使用してランダムな文字列を生成する方法については、以下のコードを参照してください)。あなたの代わりにUUIDを試してみてください。 mcrypt_create_ivを単独で使用すると、読めない文字が生成されます。このような何か読みやすい使用にBIN2HEX関数をそれらの読めない文字を「変換」するには、次の
$random_string = bin2hex(mcrypt_create_iv(30, [MCRYPT_DEV_RANDOM|MCRYPT_DEV_URANDOM|MCRYPT_RAND]));
「30」は、あなたが取得したい初期化ベクトルの大きさです。 5.3.0リリースより古いバージョンのWindowsマシンでは、MCRYPT_DEV_URANDOMおよびMCRYPT_DEV_RANDOMを使用することはできません。代わりにMCRYPT_RANDを使用してください。
ありがとうございます、あなたは簡潔できれいな例を入れた最初です、私はウェブ上の任意のものを見つけることができません。 – Lyoneel
- 1. Akamai fast purge using php 5.3
- 2. 関数mcrypt_create_iv()は非推奨です - コード名
- 3. Javascript AJAX using $(this)
- 4. filter_var using FILTER_VALIDATE_REGEXP
- 5. Doctrine using MySQL
- 6. mysqli_real_escape_string using environment
- 7. Using System.Random
- 8. using System.Reflection
- 9. using this.props.someVariable
- 10. GestureDetector using service
- 11. Logger.getLogger()using jmock
- 12. EXC_BAD_ACCESS using self.performSelector
- 13. API JSON using number
- 14. Page translate using angularjs
- 15. Xamarin using Beep()
- 16. Anaconda using IPython Notebook
- 17. BackboneJS model.url using collection.url
- 18. Ninject logger using NLog
- 19. using connection.open with statement
- 20. fisher.test using R
- 21. NAnt using MSBuild
- 22. as3 starling using box2d
- 23. LINQ using C#.net
- 24. cv2.cameraCalibration using python
- 25. geolocation using html5
- 26. AssemblyFileRemoteSources error using Assembly.LoadFrom
- 27. c#using nancy framework
- 28. IOS Automation Using UFT
- 29. Javascript RegExp using .test()
- 30. は、USINGコマンド
'mcrypt_create_iv'の目的はランダムな文字列を生成しないことです。その目的は、暗号化初期化ベクトル(したがって、* mcrypt *と* iv *)を生成することです。 – netcoder
mcrypt_create_ivの出力でbase64_encodeを実行することも、より小さい文字セットを使用する場合にはオプションになります。 – yoshiwaan