úÎ÷9    %(c) 2009, 2010, 2012-2015 Peter TrakoBSD3#Peter Trako <peter.trsko@gmail.com> ProvisionaloBangPatterns, CPP, DeriveDataTypeable, DeriveGeneric, ForeignFunctionInterface, NoImplicitPreludeNone +0(Apache MD5 hash salt. When constructing  .htpasswdD file it is necessary for the salt to be consisting of octets from ! "set". This newtype along with 6 smart constructor are here to ensure such invariant.-Type alias for more readable type signatures.qRaw Apache MD5 implementation that is parametrized by MD5 implementation and doesn't encode result in to Base64.This module provides  for producing Apache htpasswd compatible Base64 encoding.Alphabet used by .3Check if specified 8 bit word is a valid member of .>Encode raw MD5 hash in to Base64-like encoding used by Apache htpasswd.Length of MD5 hash in octets.8Thin Haskell wrapper around OpenSSL's MD5 hash function.  MD5 hash function.Apache MD5 Hash    %(c) 2009, 2010, 2012-2015 Peter TrakoBSD3#Peter Trako <peter.trsko@gmail.com> Provisional:NoImplicitPrelude; depends on non-portable internal moduleNone Smart constructor for . It tests that provided  Z is not empty and that all its octets are members of alphabet used for base 64 encoding  and it uses  predicate to do so. Unpack  in to  . kTaking password and salt this function produces resulting ApacheMD5 hash which is already base 64 encoded. Apache MD5 Hash         apache-md5-0.6.1.4Data.Digest.ApacheMD5.InternalData.Digest.ApacheMD5mkSaltalpha64SaltPassword apacheMD5 isAlpha64encode64md5DigestLengthmd5BSunSaltc_md5bytestring-0.10.4.0Data.ByteString.Internal ByteString