summaryrefslogtreecommitdiff
path: root/index.pl
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2019-03-06 17:59:00 +0100
committerDaniel Friesel <derf@finalrewind.org>2019-03-06 17:59:00 +0100
commit058d93a6fd9f186c46ff8f53a444a914fb226d8a (patch)
tree6bb0ac10b74786d5e6b61e6ce5f3f05f99028907 /index.pl
parent8057c16cc438769671f5d47aef39e8017b430d19 (diff)
add password hashing
Diffstat (limited to 'index.pl')
-rwxr-xr-xindex.pl18
1 files changed, 18 insertions, 0 deletions
diff --git a/index.pl b/index.pl
index 856327c..2157c03 100755
--- a/index.pl
+++ b/index.pl
@@ -3,6 +3,7 @@
use Mojolicious::Lite;
use Mojolicious::Plugin::Authentication;
use Cache::File;
+use Crypt::Eksblowfish::Bcrypt qw(bcrypt en_base64);
use DateTime;
use DBI;
use Encode qw(decode encode);
@@ -225,6 +226,23 @@ app->attr(
},
);
+sub hash_password {
+ my ($password) = @_;
+ my @salt_bytes = map { int( rand(255) ) + 1 } ( 1 .. 16 );
+ my $salt = en_base64( pack( 'c[16]', @salt_bytes ) );
+
+ return bcrypt( $password, '$2a$12$' . $salt );
+}
+
+sub check_password {
+ my ( $password, $hash ) = @_;
+
+ if ( bcrypt( $password, $hash ) eq $hash ) {
+ return 1;
+ }
+ return 0;
+}
+
sub epoch_to_dt {
my ($epoch) = @_;