hash.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package myth
  2. import (
  3. "crypto/hmac"
  4. "crypto/md5"
  5. "crypto/sha1"
  6. "crypto/sha256"
  7. "crypto/sha512"
  8. "encoding/hex"
  9. )
  10. // SHA512 hash
  11. func SHA512(data []byte) ([]byte, error) {
  12. hash := sha512.New()
  13. _, err := hash.Write(data)
  14. if err != nil {
  15. return nil, err
  16. }
  17. return hash.Sum(nil), nil
  18. }
  19. // HmacSHA256 hmac with sha256
  20. func HmacSHA256(k, s []byte) ([]byte, error) {
  21. hash := hmac.New(sha256.New, k)
  22. _, err := hash.Write(s)
  23. if err != nil {
  24. return nil, err
  25. }
  26. return hash.Sum(nil), nil
  27. }
  28. // SHA256 hash string
  29. func SHA256(data string) string {
  30. hash := sha256.New()
  31. hash.Write([]byte(data))
  32. return hex.EncodeToString(hash.Sum(nil))
  33. }
  34. // MD5 hash string
  35. func MD5(data string) string {
  36. hash := md5.New()
  37. hash.Write([]byte(data))
  38. return hex.EncodeToString(hash.Sum(nil))
  39. }
  40. // SHA1 hash string
  41. func SHA1(data string) string {
  42. hash := sha1.New()
  43. hash.Write([]byte(data))
  44. return hex.EncodeToString(hash.Sum(nil))
  45. }
  46. // HmacSHA1 hmac with sha1
  47. func HmacSHA1(k, s []byte) ([]byte, error) {
  48. hash := hmac.New(sha1.New, k)
  49. _, err := hash.Write(s)
  50. if err != nil {
  51. return nil, err
  52. }
  53. return hash.Sum(nil), nil
  54. }