Files
tyapi-server/internal/shared/crypto/west_crypto_test.go
2025-09-20 17:46:33 +08:00

214 lines
5.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)
}
}
}