首先引入 xxtea.min.js ,GitHub开源地址:https://github.com/xxtea/xxtea-js
示例 #1 JavaScript 返回base64格式的XXTEA加密数据。
var str = "Hello World"; // 明文内容 var key = "1234567890"; // 秘钥 var encrypt_data = XXTEA.encryptToBase64(str, key); // 调用加密函数 console.log(encrypt_data);
Output of the above example: cZRt9vZfLAyX+Dfd/R0CDw==
示例 #2 JavaScript 返回字符串形式的解密数据。
var str = "cZRt9vZfLAyX+Dfd/R0CDw=="; // 密文内容 var key = "1234567890"; // 秘钥 var decrypt_data = XXTEA.decryptFromBase64(str, key); // 调用解密函数 console.log(decrypt_data);
Output of the above example: Hello World
首先通过以下命令安装依赖:go get github.com/xxtea/xxtea-go/xxtea
示例 #1 Go 返回base64格式的XXTEA加密数据。
package main
import (
"encoding/base64"
"fmt"
"github.com/xxtea/xxtea-go/xxtea"
)
func main() {
// XXTEA加密
data := xxtea.Encrypt([]byte("Hello World"), []byte("1234567890"))
// base64编码
encodedStr := base64.StdEncoding.EncodeToString(data)
fmt.Println("Encoded:", encodedStr)
} Output of the above example: cZRt9vZfLAyX+Dfd/R0CDw==
示例 #2 Go 返回字符串形式的解密数据。
package main
import (
"encoding/base64"
"fmt"
"github.com/xxtea/xxtea-go/xxtea"
)
func main() {
encodedStr := "cZRt9vZfLAyX+Dfd/R0CDw=="
// base64解码
decodedBytes, err := base64.StdEncoding.DecodeString(encodedStr)
if err != nil {
fmt.Println("Error decoding string:", err)
return
}
// XXTEA解密, 如果解密失败,则函数返回值为空
decodeData := xxtea.Decrypt(decodedBytes, []byte("1234567890"))
fmt.Printf("%s\n", decodeData)
} Output of the above example: Hello World
XXTEA(Corrected Block TEA) 是一种分组对称加密算法,属于TEA(微型加密算法)家族中最成熟的版本。
它于1998年由David Wheeler和Roger Needham设计,旨在修复早期TEA算法的安全缺陷。XXTEA的核心特点是实现极简且高效:加密和解密使用同一个密钥,标准密钥长度为128位,其加解密过程仅依赖基础的加法、异或(XOR)、移位运算,不涉及复杂的置换表或硬件指令,因此代码量极小(通常仅需几十行),执行速度极快。
在技术上,XXTEA采用可变长分组设计,将整个消息作为整体进行混合整数运算,增强了雪崩效应(即输入微小变化导致输出巨大差异),从而提高了安全性。
尽管在高安全场景(如金融支付)中已被AES取代,但凭借其轻量级和跨平台易移植的优势,XXTEA在嵌入式系统、物联网设备、游戏存档加密及开源密码管理器等资源受限的领域中依然被广泛使用。它是一种在安全强度与计算资源消耗之间取得巧妙平衡的经典算法。