1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| import ( "crypto" "crypto/rand" "crypto/rsa" "crypto/sha1" "crypto/x509" "encoding/base64" "encoding/hex" )
func RsaEncryptWithSha1Base64(plaintext, publicKey string) (string, error) { key, _ := base64.StdEncoding.DecodeString(publicKey) pubKey, _ := x509.ParsePKIXPublicKey(key)
ciphertext, err := rsa.EncryptPKCS1v15(rand.Reader, pubKey.(*rsa.PublicKey), []byte(plaintext)) if err != nil { return "", err }
return base64.StdEncoding.EncodeToString(ciphertext), nil }
func RsaDecryptWithSha1Base64(ciphertext, privateKey string) (string, error) { ciphertextBytes, err := base64.StdEncoding.DecodeString(ciphertext) if err != nil { return "", err }
key, _ := base64.StdEncoding.DecodeString(privateKey) prvKey, _ := x509.ParsePKCS1PrivateKey(key) plaintext, err := rsa.DecryptPKCS1v15(rand.Reader, prvKey, ciphertextBytes)
return string(plaintext), err }
func RsaSignWithSha1Hex(data, privateKey string) (string, error) { key, err := hex.DecodeString(privateKey) if err != nil { return "", err }
prvKey, err := x509.ParsePKCS8PrivateKey(key) if err != nil { return "", err }
hash := sha1.New() hash.Write([]byte(data))
signature, err := rsa.SignPKCS1v15(rand.Reader, prvKey.(*rsa.PrivateKey), crypto.SHA1, hash.Sum(nil)) if err != nil { return "", err }
return hex.EncodeToString(signature), nil }
func RsaVerifySignWithSha1Base64(data, signature, publicKey string) error { sign, err := base64.StdEncoding.DecodeString(signature) if err != nil { return err }
key, _ := base64.StdEncoding.DecodeString(publicKey) pubKey, err := x509.ParsePKIXPublicKey(key) if err != nil { return err }
hash := sha1.New() hash.Write([]byte(data))
return rsa.VerifyPKCS1v15(pubKey.(*rsa.PublicKey), crypto.SHA1, hash.Sum(nil), sign) }
|