fix
This commit is contained in:
213
internal/shared/crypto/west_crypto_test.go
Normal file
213
internal/shared/crypto/west_crypto_test.go
Normal 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)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user