diff --git a/internal/app/iptv/crypto.go b/internal/app/iptv/crypto.go index 63a77fa..9f6ba13 100644 --- a/internal/app/iptv/crypto.go +++ b/internal/app/iptv/crypto.go @@ -1,47 +1,12 @@ package iptv import ( - "bytes" - "crypto/des" "encoding/hex" - "errors" "strings" "github.com/forgoer/openssl" ) -// pad 补码函数,将文本填充至块大小的倍数(8字节) -func pad(src []byte) []byte { - padding := des.BlockSize - len(src)%des.BlockSize - padText := bytes.Repeat([]byte{byte(padding)}, padding) - return append(src, padText...) -} - -// unPad 去补码函数,移除填充的数据 -func unPad(src []byte) ([]byte, error) { - length := len(src) - if length == 0 { - return nil, errors.New("input is empty") - } - - // 获取填充的长度 - unPadding := int(src[length-1]) - - // 检查填充长度是否有效 - if unPadding <= 0 || unPadding > length { - return nil, errors.New("invalid padding size") - } - - return src[:(length - unPadding)], nil -} - -// removePaddingCharacters 去除补码字符 -func removePaddingCharacters(src []byte) ([]byte, error) { - // 去除 '\x08' 字符 - src = bytes.ReplaceAll(src, []byte{'\x08'}, []byte{}) - return src, nil -} - type TripleDESCrypto struct { key []byte } @@ -62,9 +27,7 @@ func NewTripleDESCrypto(key string) *TripleDESCrypto { // ECBEncrypt 加密函数,返回十六进制字符串 func (c *TripleDESCrypto) ECBEncrypt(plainText string) (string, error) { - // 补码 - paddedText := pad([]byte(plainText)) - encrypted, err := openssl.Des3ECBEncrypt(paddedText, c.key, openssl.PKCS7_PADDING) + encrypted, err := openssl.Des3ECBEncrypt([]byte(plainText), c.key, openssl.PKCS7_PADDING) if err != nil { return "", err } @@ -84,11 +47,5 @@ func (c *TripleDESCrypto) ECBDecrypt(cipherText string) (string, error) { return "", err } - // 去除补码 - result, err := removePaddingCharacters(decrypted) - if err != nil { - return "", err - } - - return string(result), nil + return string(decrypted), nil }