This commit is contained in:
2025-09-20 17:46:33 +08:00
parent 353c57c98b
commit 2685df85c3
4 changed files with 499 additions and 3 deletions

View File

@@ -0,0 +1,213 @@
package crypto
import (
"testing"
)
func TestWestDexEncryptDecrypt(t *testing.T) {
testCases := []struct {
name string
data string
secretKey string
}{
{
name: "简单文本",
data: "hello world",
secretKey: "mySecretKey123",
},
{
name: "中文文本",
data: "你好世界",
secretKey: "中文密钥",
},
{
name: "JSON数据",
data: `{"name":"张三","age":30,"city":"北京"}`,
secretKey: "jsonSecretKey",
},
{
name: "长文本",
data: "这是一个很长的文本用来测试加密解密功能是否正常工作。包含各种字符123456789!@#$%^&*()_+-=[]{}|;':\",./<>?",
secretKey: "longTextKey",
},
{
name: "空字符串",
data: "",
secretKey: "emptyDataKey",
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
// 加密
encrypted, err := WestDexEncrypt(tc.data, tc.secretKey)
if err != nil {
t.Fatalf("加密失败: %v", err)
}
t.Logf("原始数据: %s", tc.data)
t.Logf("密钥: %s", tc.secretKey)
t.Logf("加密结果: %s", encrypted)
// 解密
decrypted, err := WestDexDecrypt(encrypted, tc.secretKey)
if err != nil {
t.Fatalf("解密失败: %v", err)
}
decryptedStr := string(decrypted)
t.Logf("解密结果: %s", decryptedStr)
// 验证解密结果是否与原始数据一致
if decryptedStr != tc.data {
t.Errorf("解密结果不匹配: 期望 %s, 实际 %s", tc.data, decryptedStr)
}
})
}
}
func TestWestDexDecryptOutput(t *testing.T) {
// 专门用来查看解密结果的测试
testData := []struct {
name string
data string
secretKey string
encryptedData string // 预设的加密数据
}{
{
name: "测试数据1",
data: "DLrbtEki5o/5yTvQWR+dWWUZYEo5s58D8LTnhhlAl99SwZbECa34KpStmR+Qr0gbbKzh3y4t5+/vbFFZgv03DtnYlLQcQt+rSgtxkCN/PCBPaFE0QZRTufd7djJfUww0Eh6DMHD7NS9pcuCa0PHGVoE+Vwo2YSwOnh2gtx3Bt0Qhs+w76tfCwIeufZ8tcpFs/nb84HIZxk+0cH1bTfNE6VsXI6vMpKvnS02O3oE2642ozeHgglCNuiOFMcCL8Erw4FKPnfRCUYdeKc2dZ7OF2IZqt0t4WiJBxjB/6k4tgAj/HepE2gaulWU8RVvAF+vPF5i3ekHHq8T7226rNlVfuagodaRXiOqO5E1h6Mx9ygcDL0HXvQKsxxJdl/bUP+t/+rOjA+k/IR/vF1UJGrGrkSJVfkcWXPP85cgws18gE9rIs2Ji1HGjvOmnez370L0+",
secretKey: "121a1e41fc1690dd6b90afbcacd80cf4",
},
{
name: "中文数据",
data: "用户数据",
secretKey: "密钥123",
},
{
name: "API数据",
data: "api_call_data",
secretKey: "production_key",
},
{
name: "JSON格式",
data: `{"user_id":12345,"name":"张三","status":"active"}`,
secretKey: "json_key",
},
}
for i, td := range testData {
decrypted, err := WestDexDecrypt(td.data, td.secretKey)
if err != nil {
t.Fatalf("解密失败: %v", err)
}
t.Logf("测试 %d - %s:", i+1, td.name)
t.Logf(" 原始数据: %s", td.data)
t.Logf(" 使用密钥: %s", td.secretKey)
t.Logf(" 解密结果: %s", string(decrypted))
t.Logf(" 解密正确: %v", string(decrypted) == td.data)
t.Log("---")
}
}
func TestSpecificDecrypt(t *testing.T) {
// 如果你有特定的加密数据想要解密,可以在这里测试
specificTests := []struct {
name string
encryptedData string
secretKey string
expectedData string // 如果知道预期结果的话
}{
// 示例:如果你有具体的加密数据想要解密,可以添加到这里
// {
// name: "特定数据解密",
// encryptedData: "你的加密数据",
// secretKey: "你的密钥",
// expectedData: "预期的解密结果",
// },
}
t.Log("=== 特定数据解密测试 ===")
for _, test := range specificTests {
decrypted, err := WestDexDecrypt(test.encryptedData, test.secretKey)
if err != nil {
t.Logf("%s - 解密失败: %v", test.name, err)
continue
}
result := string(decrypted)
t.Logf("%s:", test.name)
t.Logf(" 加密数据: %s", test.encryptedData)
t.Logf(" 使用密钥: %s", test.secretKey)
t.Logf(" 解密结果: %s", result)
if test.expectedData != "" {
t.Logf(" 预期结果: %s", test.expectedData)
t.Logf(" 解密正确: %v", result == test.expectedData)
}
t.Log("---")
}
}
func TestWestDexDecryptWithWrongKey(t *testing.T) {
// 测试用错误密钥解密
data := "sensitive data"
correctKey := "correct_key"
wrongKey := "wrong_key"
// 用正确密钥加密
encrypted, err := WestDexEncrypt(data, correctKey)
if err != nil {
t.Fatalf("加密失败: %v", err)
}
// 用错误密钥解密
decrypted, err := WestDexDecrypt(encrypted, wrongKey)
if err != nil {
t.Logf("用错误密钥解密失败(这是预期的): %v", err)
return
}
decryptedStr := string(decrypted)
t.Logf("原始数据: %s", data)
t.Logf("用错误密钥解密结果: %s", decryptedStr)
// 验证解密结果应该与原始数据不同
if decryptedStr == data {
t.Error("用错误密钥解密不应该得到正确结果")
}
}
// 基准测试
func BenchmarkWestDexEncrypt(b *testing.B) {
data := "这是一个用于基准测试的数据字符串"
secretKey := "benchmarkKey"
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, err := WestDexEncrypt(data, secretKey)
if err != nil {
b.Fatalf("加密失败: %v", err)
}
}
}
func BenchmarkWestDexDecrypt(b *testing.B) {
data := "这是一个用于基准测试的数据字符串"
secretKey := "benchmarkKey"
// 先加密一次获得密文
encrypted, err := WestDexEncrypt(data, secretKey)
if err != nil {
b.Fatalf("预加密失败: %v", err)
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, err := WestDexDecrypt(encrypted, secretKey)
if err != nil {
b.Fatalf("解密失败: %v", err)
}
}
}