2
0
forked from Wavyzz/dolibarr
Files
dolibarr-fork/htdocs/includes/phpoffice/PhpSpreadsheet/Shared/PasswordHasher.php
2019-01-21 14:06:01 +01:00

38 lines
1.1 KiB
PHP

<?php
namespace PhpOffice\PhpSpreadsheet\Shared;
class PasswordHasher
{
/**
* Create a password hash from a given string.
*
* This method is based on the algorithm provided by
* Daniel Rentz of OpenOffice and the PEAR package
* Spreadsheet_Excel_Writer by Xavier Noguer <xnoguer@rezebra.com>.
*
* @param string $pPassword Password to hash
*
* @return string Hashed password
*/
public static function hashPassword($pPassword)
{
$password = 0x0000;
$charPos = 1; // char position
// split the plain text password in its component characters
$chars = preg_split('//', $pPassword, -1, PREG_SPLIT_NO_EMPTY);
foreach ($chars as $char) {
$value = ord($char) << $charPos++; // shifted ASCII value
$rotated_bits = $value >> 15; // rotated bits beyond bit 15
$value &= 0x7fff; // first 15 bits
$password ^= ($value | $rotated_bits);
}
$password ^= strlen($pPassword);
$password ^= 0xCE4B;
return strtoupper(dechex($password));
}
}