PHPで変なテキトーなパスワードハッシュの作り方のパッチ var.20200715 | TheoryOfContraints official blog

PHPで変なテキトーなパスワードハッシュの作り方のパッチ var.20200715

少し機能を追加したのでパッチをブログで残しておく

 

ShiftとShiftをXorして、それをXorするのは、クロス・クロスオア・シフトって言うジョークで作った

 

        static function NotXorLeft($x) {
            if ($x > 16) {
                $x = 16;
            }
            $x = self::$seed << $x;
            self::Not();
            self::$seed = self::$seed ^ $x;
        }
        
        static function NotXorRight($x) {
            if ($x > 16) {
                $x = 16;
            }
            $x = self::$seed >> $x;
            self::Not();
            self::$seed = self::$seed ^ $x;
        }
        
        static function XxorShift($x, $y) {
            if ($x > 16) {
                $x = 16;
            }
            if ($y > 16) {
                $y = 16;
            }
            $x = self::$seed >> $x;
            $y = self::$seed << $y;
            $x = $x ^ $y;
            self::$seed = self::$seed ^ $x;
        }
        
        static function NotXxorShift($x, $y) {
            if ($x > 16) {
                $x = 16;
            }
            if ($y > 16) {
                $y = 16;
            }
            $x = self::$seed >> $x;
            $y = self::$seed << $y;
            $x = $x ^ $y;
            self::Not();
            self::$seed = self::$seed ^ $x;
        }