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