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) }