12345678910111213141516171819202122232425262728293031323334353637 |
- package utils
- import (
- "bytes"
- "crypto/cipher"
- "crypto/des"
- "encoding/base64"
- )
- // des3 + base64 encrypt
- func DesBase64Encrypt(origData []byte, desKey string) []byte {
- result, err := TripleDesEncrypt(origData, []byte(desKey))
- if err != nil {
- panic(any(err))
- }
- return []byte(base64.StdEncoding.EncodeToString(result))
- }
- // 3DES加密
- func TripleDesEncrypt(origData, key []byte) ([]byte, error) {
- block, err := des.NewTripleDESCipher(key)
- if err != nil {
- return nil, err
- }
- origData = PKCS5Padding(origData, block.BlockSize())
- // origData = ZeroPadding(origData, block.BlockSize())
- blockMode := cipher.NewCBCEncrypter(block, key[:8])
- crypted := make([]byte, len(origData))
- blockMode.CryptBlocks(crypted, origData)
- return crypted, nil
- }
- func PKCS5Padding(ciphertext []byte, blockSize int) []byte {
- padding := blockSize - len(ciphertext)%blockSize
- padtext := bytes.Repeat([]byte{byte(padding)}, padding)
- return append(ciphertext, padtext...)
- }
|