Ответ 1
В соответствии с bcrypt docs вы должны использовать строгие байты
import Data.ByteString.Char8
вместо ленивых:
import Data.ByteString.Lazy.Char8
Запуск следующего кода:
import Crypto.BCrypt
import Data.ByteString.Lazy.Char8
main = do
maybe_pwhash <- hashPasswordUsingPolicy slowerBcryptHashingPolicy (pack "hunter2")
print $ maybe_pwhash
Я получаю следующую ошибку компиляции:
test.hs:5:70:
Couldn't match expected type `Data.ByteString.Internal.ByteString'
with actual type `ByteString'
In the return type of a call of `pack'
In the second argument of `hashPasswordUsingPolicy', namely
`(C.pack "hunter2")'
In a stmt of a 'do' block:
maybe_pwhash <- hashPasswordUsingPolicy
slowerBcryptHashingPolicy (pack "hunter2")
Я запутался, потому что не понимаю, почему существует разница между Data.ByteString.Internal.ByteString
и a ByteString
.
В соответствии с bcrypt docs вы должны использовать строгие байты
import Data.ByteString.Char8
вместо ленивых:
import Data.ByteString.Lazy.Char8