summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2011-01-23 11:15:33 +0100
committerAndreas Gohr <andi@splitbrain.org>2011-01-23 11:15:33 +0100
commit62bbd5ef5f25e1d89d67a00cc3b51a954013d7cb (patch)
treeeb9070ea8cd4afc88dbf53fcf009f14ad9fe18c3
parent52c9860c6e3a36b884ca186f1c9ea3d7acdf2b13 (diff)
downloadrpg-62bbd5ef5f25e1d89d67a00cc3b51a954013d7cb.tar.gz
rpg-62bbd5ef5f25e1d89d67a00cc3b51a954013d7cb.tar.bz2
use a bigger range of characters for password salts
-rw-r--r--_test/cases/inc/auth_password.test.php10
-rw-r--r--inc/PassHash.class.php6
2 files changed, 14 insertions, 2 deletions
diff --git a/_test/cases/inc/auth_password.test.php b/_test/cases/inc/auth_password.test.php
index 1c0942239..8646e3226 100644
--- a/_test/cases/inc/auth_password.test.php
+++ b/_test/cases/inc/auth_password.test.php
@@ -39,6 +39,16 @@ class auth_password_test extends UnitTestCase {
}
}
+ function test_verifySelf(){
+ foreach($this->passes as $method => $hash){
+ $info = "testing method $method";
+ $this->signal('failinfo',$info);
+
+ $hash = auth_cryptPassword('foo'.$method);
+ $this->assertTrue(auth_verifyPassword('foo'.$method,$hash));
+ }
+ }
+
function test_verifyPassword_nohash(){
$this->assertTrue(auth_verifyPassword('foo','$1$$n1rTiFE0nRifwV/43bVon/'));
}
diff --git a/inc/PassHash.class.php b/inc/PassHash.class.php
index c4a6d78d0..cb46c5928 100644
--- a/inc/PassHash.class.php
+++ b/inc/PassHash.class.php
@@ -77,11 +77,13 @@ class PassHash {
/**
* Create a random salt
*
- * @todo use full range of characters instead of hex values only
* @param int $len - The length of the salt
*/
public function gen_salt($len=32){
- return substr(md5(uniqid(rand(), true)),0,$len);
+ $salt = '';
+ $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
+ for($i=0;$i<$len,$i++;) $salt .= $chars[mt_rand(0,61)];
+ return $salt;
}
/**