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