rsa.go 901 B

123456789101112131415161718192021222324252627282930313233343536
  1. package unionpay
  2. import (
  3. "crypto"
  4. "crypto/rand"
  5. "crypto/rsa"
  6. "crypto/sha256"
  7. )
  8. // encrypt RSA 加密
  9. func encrypt(publicKey *rsa.PublicKey, src []byte) (data []byte, err error) {
  10. data, err = rsa.EncryptPKCS1v15(rand.Reader, publicKey, src)
  11. return
  12. }
  13. // decrypt RSA 解密
  14. func decrypt(priveKey *rsa.PrivateKey, ciphertext []byte) (data []byte, err error) {
  15. data, err = rsa.DecryptPKCS1v15(rand.Reader, priveKey, ciphertext)
  16. return
  17. }
  18. // sign RSA 签名
  19. func sign(priveKey *rsa.PrivateKey, src []byte) (data []byte, err error) {
  20. hashed := sha256.Sum256(src)
  21. //hashed = sha256.Sum256(hashed[:])
  22. data, err = rsa.SignPKCS1v15(rand.Reader, priveKey, crypto.SHA256, hashed[:])
  23. return
  24. }
  25. // verify RSA 签名验证
  26. func verify(publicKey *rsa.PublicKey, src, sig []byte) (err error) {
  27. hashed := sha256.Sum256(src)
  28. err = rsa.VerifyPKCS1v15(publicKey, crypto.SHA256, hashed[:], sig)
  29. return
  30. }