gorsa.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package utils
  2. import (
  3. "encoding/base64"
  4. "encoding/hex"
  5. )
  6. // 公钥加密
  7. func PublicEncrypt(data, publicKey string) (string, error) {
  8. grsa := RSASecurity{}
  9. grsa.SetPublicKey(publicKey)
  10. rsadata, err := grsa.PubKeyENCTYPT([]byte(data))
  11. if err != nil {
  12. return "", err
  13. }
  14. return base64.StdEncoding.EncodeToString(rsadata), nil
  15. }
  16. // 私钥加密
  17. func PriKeyEncrypt(data, privateKey string) (string, error) {
  18. grsa := RSASecurity{}
  19. grsa.SetPrivateKey(privateKey)
  20. rsadata, err := grsa.PriKeyENCTYPT([]byte(data))
  21. if err != nil {
  22. return "", err
  23. }
  24. return base64.RawStdEncoding.EncodeToString(rsadata), nil
  25. }
  26. // 公钥解密
  27. func PublicDecrypt(data, publicKey string) (string, error) {
  28. databs, _ := base64.StdEncoding.DecodeString(data)
  29. grsa := RSASecurity{}
  30. if err := grsa.SetPublicKey(publicKey); err != nil {
  31. return "", err
  32. }
  33. rsadata, err := grsa.PubKeyDECRYPT(databs)
  34. if err != nil {
  35. return "", err
  36. }
  37. return hex.EncodeToString(rsadata), nil
  38. }
  39. // 私钥解密
  40. func PriKeyDecrypt(data, privateKey string) (string, error) {
  41. databs, _ := base64.StdEncoding.DecodeString(data)
  42. grsa := RSASecurity{}
  43. if err := grsa.SetPrivateKey(privateKey); err != nil {
  44. return "", err
  45. }
  46. rsadata, err := grsa.PriKeyDECRYPT(databs)
  47. if err != nil {
  48. return "", err
  49. }
  50. return hex.EncodeToString(rsadata), nil
  51. }