golang rsa 加密 发表于 2017-12-11 | 更新于 2018-06-06 | 分类于 golang 12345678910111213141516171819202122package mainimport ( "crypto/aes" "crypto/cipher" "encoding/base64" "crypto/sha1" "fmt" "bytes" "encoding/hex" "strings")// js 加密算法// var encrypted = CryptoJS.AES.encrypt(sendData, key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7});// 换成Golang 加密 实现一遍const appKey = "00003";const appKeySecret = "754DHA8DHPN976DS";const versionName = "1.0" 1234567891011121314151617181920212223242526272829303132333435363738394041424344func PKCS5Padding(ciphertext []byte, blockSize int) []byte { padding := blockSize - len(ciphertext)%blockSize padtext := bytes.Repeat([]byte{byte(padding)}, padding) return append(ciphertext, padtext...)}func AesEncrypt(origData, key []byte) ([]byte, error) { block, err := aes.NewCipher(key) if err != nil { return nil, err } blockSize := block.BlockSize() origData = PKCS5Padding(origData, blockSize) iv := []byte("754DHA8DHPN976DS") blockMode := cipher.NewCBCEncrypter(block, iv) crypted := make([]byte, len(origData)) blockMode.CryptBlocks(crypted, origData) return crypted, nil}func testAes() (string, string) { key := []byte("754DHA8DHPN976DS") result, err := AesEncrypt([]byte(`{"Phone":"13234567890"}`), key) if err != nil { panic(err) } var jsonString = base64.StdEncoding.EncodeToString(result) var signStr = appKeySecret+"appKey"+appKey+"jsonString"+jsonString+"userToken"+""+"v"+versionName+appKeySecret r := sha1.Sum([]byte(signStr)) signStr = strings.ToUpper(hex.EncodeToString(r[:])) return signStr, jsonString}func main() { signstr, jsonstr := testAes() fmt.Println(signstr, "\n",jsonstr)}