Почему мой пакет crypt выдает ошибку неправильного магического префикса? - PullRequest
0 голосов
/ 01 июля 2018

У меня есть следующий код:

import "github.com/kless/osutil/user/crypt/sha512_crypt"
c := sha512_crypt.New()
hash, err := c.Generate([]byte("enter-new-password"), []byte("$2a$09$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj.8jgmtzZP2"))
if err != nil {
    panic(err)
}

И это выдало следующую ошибку

http: паника, обслуживающая 192.168.0.16:56730: неверный магический префикс

Почему это происходит и как мне это решить?

1 Ответ

0 голосов
/ 01 июля 2018

Почему это происходит и как мне это решить?


У вас неверный магический префикс.


github.com/tredoe/osutil/user/crypt/sha512_crypt/sha512_crypt.go

if !bytes.HasPrefix(salt, c.Salt.MagicPrefix) {
  return "", common.ErrSaltPrefix
}

Прочитайте код пакета crypt.


PHP: crypt - односторонняя строка хэширования

PHP: password_hash - создает хэш пароля

Прочитайте документацию PHP.

См. Ваш предыдущий вопрос: эквивалент golang PHP crypt () .


Укажите правильный магический префикс.


Например,

package main

import (
    "fmt"

    "github.com/kless/osutil/user/crypt/sha512_crypt"
)

func main() {
    c := sha512_crypt.New()
    magic := sha512_crypt.MagicPrefix
    hash, err := c.Generate(
        []byte("enter-new-password"),
        []byte(magic+"$2a$09$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj.8jgmtzZP2"),
    )
    if err != nil {
        panic(err)
    }
    fmt.Println(hash)
}

Выход:

$6$$.AVE44JRnLFr9TZx3zASJX6V3Uu0jpnrOV6fW1T5NHy3MUKPaJXHGvjooxrAkYsuIL2HwS/sYgzUZ.cg8FTtz/

Примечание:

import "github.com/kless/osutil/user/crypt/sha512_crypt"

теперь является псевдонимом для нового местоположения

import "github.com/tredoe/osutil/user/crypt/sha512_crypt"
...