encrypt_utils.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package auth
  2. import (
  3. logger "eta/eta_mini_ht_api/common/component/log"
  4. "strings"
  5. )
  6. func Encrypt(plaintext []byte) (encrypted string, err error) {
  7. aesKey, err := GenerateAESKey()
  8. if err != nil {
  9. logger.Error("生成AES密钥失败", err)
  10. return
  11. }
  12. //数据加密
  13. encryptData, err := EncryptWithAES(aesKey, plaintext)
  14. if err != nil {
  15. logger.Error("ASE加密数据失败", err)
  16. return
  17. }
  18. publicKey, err := ParsePublicKeyFromPEM()
  19. if err != nil {
  20. logger.Error("解析公钥失败", err)
  21. return
  22. }
  23. EncryptAesKey, err := EncryptWithRSA(publicKey, aesKey)
  24. encrypted = string(encryptData) + "|" + string(EncryptAesKey)
  25. return
  26. }
  27. func Decrypt(ciphertext string) (decrypted []byte, err error) {
  28. strParts := strings.Split(ciphertext, "|")
  29. privateKey, err := ParsePrivateKeyFromPEM()
  30. if err != nil {
  31. logger.Error("解析私钥失败", err)
  32. return
  33. }
  34. aesKey, err := DecryptWithRSA(privateKey, strParts[1])
  35. if err != nil {
  36. logger.Error("RSA解密AES秘钥失败", err)
  37. return
  38. }
  39. decrypted, err = DecryptWithAES(aesKey, []byte(strParts[0]))
  40. if err != nil {
  41. logger.Error("AES解密数据失败", err)
  42. }
  43. return
  44. }