Files
dec-music/internal/crypto/crypto.go
T

34 lines
744 B
Go

package crypto
import "crypto/aes"
// PKCS7UnPadding removes PKCS#7 padding.
func PKCS7UnPadding(encrypt []byte) []byte {
length := len(encrypt)
if length == 0 {
return encrypt
}
unPadding := int(encrypt[length-1])
if unPadding <= 0 || unPadding > length {
return encrypt
}
return encrypt[:length-unPadding]
}
// DecryptAES128ECB decrypts data with AES-128 ECB (block size 16).
func DecryptAES128ECB(data, key []byte) []byte {
cipher, err := aes.NewCipher(key)
if err != nil {
return nil
}
decrypted := make([]byte, len(data))
size := aes.BlockSize
for bs, be := 0, size; bs < len(data); bs, be = bs+size, be+size {
if be > len(data) {
break
}
cipher.Decrypt(decrypted[bs:be], data[bs:be])
}
return decrypted
}