Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1441 ariadna 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace OpenSpout\Writer\XLSX\Helper;
6
 
7
/**
8
 * @internal
9
 */
10
final class PasswordHashHelper
11
{
12
    public static function make(string $password): string
13
    {
14
        $verifier = 0;
15
        $pwlen = \strlen($password);
16
        $passwordArray = pack('c', $pwlen).$password;
17
 
18
        for ($i = $pwlen; $i >= 0; --$i) {
19
            $intermediate1 = (($verifier & 0x4000) === 0) ? 0 : 1;
20
            $intermediate2 = 2 * $verifier;
21
            $intermediate2 &= 0x7FFF;
22
            $intermediate3 = $intermediate1 | $intermediate2;
23
            $verifier = $intermediate3 ^ \ord($passwordArray[$i]);
24
        }
25
 
26
        $verifier ^= 0xCE4B;
27
 
28
        return strtoupper(dechex($verifier));
29
    }
30
}