Why does this happen and how do I resolve it?
You have an invalid magic prefix.
github.com/tredoe/osutil/user/crypt/sha512_crypt/sha512_crypt.go
if !bytes.HasPrefix(salt, c.Salt.MagicPrefix) {
return "", common.ErrSaltPrefix
}
Read the crypt package code.
PHP: crypt — One-way string
hashing
PHP: password_hash — Creates a password hash
Read the PHP documentation.
See your earlier question: golang equivalent of PHP crypt().
Provide a valid magic prefix.
For example,
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)
}
Output:
$6$$.AVE44JRnLFr9TZx3zASJX6V3Uu0jpnrOV6fW1T5NHy3MUKPaJXHGvjooxrAkYsuIL2HwS/sYgzUZ.cg8FTtz/
NOTE:
import "github.com/kless/osutil/user/crypt/sha512_crypt"
is now an alias for the new location
import "github.com/tredoe/osutil/user/crypt/sha512_crypt"
$2a$09$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj.8jgmtzZP2
appears to have been hashed already. The$2a$
may suggest that PHP5.3 or earlier used crypt() function with CRYPT_BLOWFISH . As far as I can tell with my introductory knowledge to how golang works, the kless/tredoe package makes no references to CRYPT_BLOWFISH, which may lead to other problems I do not understand. – Buckeen