From 185f1f3195cb31340dfe16dfabc740cd9c01786e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Sat, 15 Jul 2023 11:56:27 +0800 Subject: [PATCH] =?UTF-8?q?fix(des):=E4=BF=AE=E5=A4=8DDES=E5=8A=A0?= =?UTF-8?q?=E5=AF=86=E6=97=B6=E5=87=BA=E7=8E=B0=E7=9A=84=E5=AF=86=E6=96=87?= =?UTF-8?q?=E5=AD=97=E8=8A=82=E6=95=B0=E7=BB=84=E9=95=BF=E5=BA=A6=E4=B8=8D?= =?UTF-8?q?=E8=B6=B3=E7=9A=84=E6=83=85=E5=86=B5=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- encryption/des/des.go | 2 +- encryption/padding.go | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/encryption/des/des.go b/encryption/des/des.go index 99aa978..26ca99b 100644 --- a/encryption/des/des.go +++ b/encryption/des/des.go @@ -41,8 +41,8 @@ func Encrypt(data []byte, key []byte, padding encryption.PaddingMode, keyGenerat } iv := keyBytes[:] - cipherText := make([]byte, len(data)) plainText := encryption.Padding(data, block.BlockSize(), padding) + cipherText := make([]byte, len(plainText)) mode := cipher.NewCBCEncrypter(block, iv) mode.CryptBlocks(cipherText, plainText) diff --git a/encryption/padding.go b/encryption/padding.go index e09c4a5..ae1b9c4 100644 --- a/encryption/padding.go +++ b/encryption/padding.go @@ -37,6 +37,9 @@ func Unpadding(data []byte, padding ...PaddingMode) []byte { case PKCS7Padding: length := len(data) unpadding := int(data[length-1]) + if length-unpadding < 0 { + return make([]byte, 0) + } return data[:(length - unpadding)] case NoPadding: return data