71 lines
2.0 KiB
Go
71 lines
2.0 KiB
Go
package symm
|
|
|
|
import (
|
|
"crypto/des"
|
|
"io"
|
|
)
|
|
|
|
func EncryptDESCBC(data, key, iv []byte, paddingType string) ([]byte, error) {
|
|
block, err := des.NewCipher(key)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return encryptWithBlockMode(block, data, iv, MODECBC, paddingType, PKCS5PADDING)
|
|
}
|
|
|
|
func DecryptDESCBC(src, key, iv []byte, paddingType string) ([]byte, error) {
|
|
block, err := des.NewCipher(key)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return decryptWithBlockMode(block, src, iv, MODECBC, paddingType, PKCS5PADDING)
|
|
}
|
|
|
|
func EncryptDESCBCStream(dst io.Writer, src io.Reader, key, iv []byte, paddingType string) error {
|
|
block, err := des.NewCipher(key)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return encryptWithBlockModeStream(block, dst, src, iv, MODECBC, paddingType, PKCS5PADDING)
|
|
}
|
|
|
|
func DecryptDESCBCStream(dst io.Writer, src io.Reader, key, iv []byte, paddingType string) error {
|
|
block, err := des.NewCipher(key)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return decryptWithBlockModeStream(block, dst, src, iv, MODECBC, paddingType, PKCS5PADDING)
|
|
}
|
|
|
|
func Encrypt3DESCBC(data, key, iv []byte, paddingType string) ([]byte, error) {
|
|
block, err := des.NewTripleDESCipher(key)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return encryptWithBlockMode(block, data, iv, MODECBC, paddingType, PKCS5PADDING)
|
|
}
|
|
|
|
func Decrypt3DESCBC(src, key, iv []byte, paddingType string) ([]byte, error) {
|
|
block, err := des.NewTripleDESCipher(key)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return decryptWithBlockMode(block, src, iv, MODECBC, paddingType, PKCS5PADDING)
|
|
}
|
|
|
|
func Encrypt3DESCBCStream(dst io.Writer, src io.Reader, key, iv []byte, paddingType string) error {
|
|
block, err := des.NewTripleDESCipher(key)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return encryptWithBlockModeStream(block, dst, src, iv, MODECBC, paddingType, PKCS5PADDING)
|
|
}
|
|
|
|
func Decrypt3DESCBCStream(dst io.Writer, src io.Reader, key, iv []byte, paddingType string) error {
|
|
block, err := des.NewTripleDESCipher(key)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return decryptWithBlockModeStream(block, dst, src, iv, MODECBC, paddingType, PKCS5PADDING)
|
|
}
|