From 7872d98dd63a377b8ebf1dc486cff05e26252b49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81ojewski?= Date: Wed, 28 Feb 2018 21:37:51 +0100 Subject: [PATCH] SHA1 and MD5 hash implementation. --- lib/HashAlgorithm/MD5.php | 75 ++++++++++++++++++++++++++++++++++++++ lib/HashAlgorithm/SHA1.php | 75 ++++++++++++++++++++++++++++++++++++++ templates/admin.php | 4 +- 3 files changed, 152 insertions(+), 2 deletions(-) create mode 100644 lib/HashAlgorithm/MD5.php create mode 100644 lib/HashAlgorithm/SHA1.php diff --git a/lib/HashAlgorithm/MD5.php b/lib/HashAlgorithm/MD5.php new file mode 100644 index 0000000..5d7548d --- /dev/null +++ b/lib/HashAlgorithm/MD5.php @@ -0,0 +1,75 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +namespace OCA\user_sql\HashAlgorithm; + +/** + * MD5 password hash implementation. + * @author Marcin Łojewski + */ +class MD5 implements HashAlgorithm +{ + /** + * @var MD5 + */ + private static $instance; + + private function __construct() + { + } + + /** + * @return MD5 + */ + public static function getInstance() + { + if (self::$instance === null) { + self::$instance = new MD5(); + } + return self::$instance; + } + + /** + * @inheritdoc + */ + public function getVisibleName() + { + return "MD5"; + } + + /** + * @inheritdoc + */ + public function getPasswordHash($password) + { + return md5($password); + } + + /** + * @inheritdoc + */ + public function checkPassword($password, $dbHash) + { + return md5($password) === $dbHash; + } + + private function __clone() + { + } +} diff --git a/lib/HashAlgorithm/SHA1.php b/lib/HashAlgorithm/SHA1.php new file mode 100644 index 0000000..6913adb --- /dev/null +++ b/lib/HashAlgorithm/SHA1.php @@ -0,0 +1,75 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +namespace OCA\user_sql\HashAlgorithm; + +/** + * SHA1 password hash implementation. + * @author Marcin Łojewski + */ +class SHA1 implements HashAlgorithm +{ + /** + * @var SHA1 + */ + private static $instance; + + private function __construct() + { + } + + /** + * @return SHA1 + */ + public static function getInstance() + { + if (self::$instance === null) { + self::$instance = new SHA1(); + } + return self::$instance; + } + + /** + * @inheritdoc + */ + public function getVisibleName() + { + return "SHA1"; + } + + /** + * @inheritdoc + */ + public function getPasswordHash($password) + { + return sha1($password); + } + + /** + * @inheritdoc + */ + public function checkPassword($password, $dbHash) + { + return sha1($password) === $dbHash; + } + + private function __clone() + { + } +} diff --git a/templates/admin.php b/templates/admin.php index fbc35d8..a181c11 100644 --- a/templates/admin.php +++ b/templates/admin.php @@ -104,7 +104,7 @@ $cfgClass = 'section';

'Drupal 7', - 'md5' => 'MD5', + 'MD5' => 'MD5', 'md5crypt' => 'MD5 Crypt', 'Cleartext' => 'Cleartext', 'mysql_encrypt' => 'mySQL ENCRYPT()', @@ -115,7 +115,7 @@ $cfgClass = 'section'; 'joomla2' => 'Joomla > 2.5.18 phpass', 'ssha256' => 'Salted SSHA256', 'redmine' => 'Redmine', - 'sha1' => 'SHA1', + 'SHA1' => 'SHA1', 'courier_md5' => 'Courier base64-encoded MD5', 'courier_md5raw' => 'Courier hexadecimal MD5', 'courier_sha1' => 'Courier base64-encoded SHA1',