Files
huangguo_server/common/crypt/crypt_ex_test.go
T
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

50 lines
1.5 KiB
Go

package crypt
import (
"bytes"
"testing"
)
// TestCoreAesEncryptDecryptExRoundTrip 校验新增的 CoreAesDecryptEx 与 CoreAesEncryptEx 互逆。
func TestCoreAesEncryptDecryptExRoundTrip(t *testing.T) {
key := "h5-m3u8-ticket-key-roundtrip-000000000000"
plains := [][]byte{
[]byte(""),
[]byte("a"),
[]byte(`{"u":10086,"p":"v3/av/a.m3u8","e":1737000000}`),
bytes.Repeat([]byte("x"), 512),
}
for _, plain := range plains {
enc, err := CoreAesEncryptEx(plain, 12, key)
if err != nil {
t.Fatalf("encrypt: %v", err)
}
dec, err := CoreAesDecryptEx(enc, 12, key)
if err != nil {
t.Fatalf("decrypt: %v", err)
}
if !bytes.Equal(dec, plain) {
t.Fatalf("round trip mismatch: got %q want %q", dec, plain)
}
}
}
// TestCoreAesDecryptExRejectsShort 确保短于 nonce 的非法输入不 panic 且返回错误。
func TestCoreAesDecryptExRejectsShort(t *testing.T) {
if _, err := CoreAesDecryptEx([]byte{1, 2, 3}, 12, "key"); err == nil {
t.Fatal("expected error for input shorter than nonce")
}
}
// TestCoreAesDecryptExWrongKey 用错误密钥解密不应还原出原文。
func TestCoreAesDecryptExWrongKey(t *testing.T) {
enc, err := CoreAesEncryptEx([]byte("secret-payload"), 12, "key-a-000000000000000000000000000000")
if err != nil {
t.Fatalf("encrypt: %v", err)
}
dec, err := CoreAesDecryptEx(enc, 12, "key-b-111111111111111111111111111111")
if err == nil && string(dec) == "secret-payload" {
t.Fatal("wrong key must not recover plaintext")
}
}