php - How to use SHA1 encryption instead of BCrypt in Laravel 4? -
i'm developing called aac (automatic account creator) game, it's site functions create accounts, players , several more things players. server supports sha1 , plain - totally unsafe. can't dive source code , make changes. if there's anyway use sha1 grateful. read bcrypt, it's great can't change source code suit bcrypt. managed put sha1 on registration this:
$password = $input['password']; $password = sha1($password);
but can't login. doing wrong? seems laravel won't let me login.
i've got get_register
, post_register
, i've got get_login
, post_login
. need change in post_login make login or? hints?
i'm using laravel's php server (php artisan serve) , phpmyadmin on wamp. think laravel checks when checking db via auth::attempt
method laravel doing form of hashing check current pw , logged in 1 check against each other.
you'll have rewrite hash
module. laravel's ideas of following ioc , dependency injection concepts, it'll relatively easy.
first, create app/libraries
folder , add composer's autoload.classmap
:
"autoload": { "classmap": [ // ... "app/libraries" ] },
now, it's time create our class. create shahasher
class, implementing illuminate\hashing\hasherinterface
. we'll need implement 3 methods: make
, check
, needsrehash
.
note: on laravel 5, implement illuminate/contracts/hashing/hasher
instead of illuminate\hashing\hasherinterface
.
app/libraries/shahasher.php
class shahasher implements illuminate\hashing\hasherinterface { /** * hash given value. * * @param string $value * @return array $options * @return string */ public function make($value, array $options = array()) { return hash('sha1', $value); } /** * check given plain value against hash. * * @param string $value * @param string $hashedvalue * @param array $options * @return bool */ public function check($value, $hashedvalue, array $options = array()) { return $this->make($value) === $hashedvalue; } /** * check if given hash has been hashed using given options. * * @param string $hashedvalue * @param array $options * @return bool */ public function needsrehash($hashedvalue, array $options = array()) { return false; } }
now have our class done, want used default, laravel. so, we'll create shahashserviceprovider
, extending illuminate\support\serviceprovider
, , register hash
component:
app/libraries/shahashserviceprovider.php
class shahashserviceprovider extends illuminate\support\serviceprovider { /** * register service provider. * * @return void */ public function register() { $this->app['hash'] = $this->app->share(function () { return new shahasher(); }); } /** * services provided provider. * * @return array */ public function provides() { return array('hash'); } }
cool, have make sure our app loads correct service provider. on app/config/app.php
, under providers
, remove following line:
'illuminate\hashing\hashserviceprovider',
then, add one:
'shahashserviceprovider',
Comments
Post a Comment