vue加goframe使用AES加解密(记录)

发布时间 2023-04-17 19:46:18作者: zjMars

vue加goframe使用AES加解密

首先,需要在前端使用Vue的crypto-js库来进行AES加解密,可以使用以下命令进行安装:

npm install crypto-js

然后在需要加解密的组件中引入该库:

import CryptoJS from 'crypto-js'

对于加密,可以使用以下代码:

const key = CryptoJS.enc.Utf8.parse('1234567890123456') // 加密密钥,必须为16位
const iv = CryptoJS.enc.Utf8.parse('1234567890123456') // 偏移量,必须为16位
const encrypted = CryptoJS.AES.encrypt(data, key, {
  iv: iv,
  mode: CryptoJS.mode.CBC,
  padding: CryptoJS.pad.Pkcs7
})
const encryptedStr = encrypted.toString()

其中,data为需要加密的字符串,encryptedStr为加密后的字符串。

对于解密,可以使用以下代码:

const key = CryptoJS.enc.Utf8.parse('1234567890123456') // 加密密钥,必须为16位
const iv = CryptoJS.enc.Utf8.parse('1234567890123456') // 偏移量,必须为16位
const decrypted = CryptoJS.AES.decrypt(data, key, {
  iv: iv,
  mode: CryptoJS.mode.CBC,
  padding: CryptoJS.pad.Pkcs7
})
const decryptedStr = decrypted.toString(CryptoJS.enc.Utf8)

其中,data为需要解密的字符串,decryptedStr为解密后的字符串。

在后端使用goframe框架进行AES加解密,可以使用go语言内置的crypto/aes包。以下是一个简单的示例:

package main

import (
	"crypto/aes"
	"crypto/cipher"
	"encoding/base64"
	"fmt"
)

func main() {
	key := []byte("1234567890123456") // 加密密钥,必须为16位
	iv := []byte("1234567890123456")  // 偏移量,必须为16位

	// 加密
	plaintext := []byte("hello world")
	block, err := aes.NewCipher(key)
	if err != nil {
		panic(err)
	}
	ciphertext := make([]byte, len(plaintext))
	mode := cipher.NewCBCEncrypter(block, iv)
	mode.CryptBlocks(ciphertext, plaintext)
	encryptedStr := base64.StdEncoding.EncodeToString(ciphertext)
	fmt.Println(encryptedStr)

	// 解密
	ciphertext, err = base64.StdEncoding.DecodeString(encryptedStr)
	if err != nil {
		panic(err)
	}
	plaintext = make([]byte, len(ciphertext))
	mode = cipher.NewCBCDecrypter(block, iv)
	mode.CryptBlocks(plaintext, ciphertext)
	decryptedStr := string(plaintext)
	fmt.Println(decryptedStr)
}

其中,encryptedStr为加密后的字符串,decryptedStr为解密后的字符串。