2. 实现方式
2.1. react-ts
function encrypt(text){import CryptoJS from 'crypto-js'const key = "saxbj%2xas"const text ="liyuan"const iv = "01234567"const result = CryptoJS.TripleDES.encrypt(text, CryptoJS.enc.Utf8.parse(key), {mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7,iv: CryptoJS.enc.Utf8.parse(iv)})return result
}
2.2.golang (test well)
import ("bytes""crypto/cipher""crypto/des""encoding/base64""fmt"
)func Encrypt(plain string) (string, error) {key := "qwertyuiopasdfghjklzxcvb"block, err := des.NewTripleDESCipher([]byte(key))if err != nil {return "", err}input := []byte(plain)input = PKCS5Padding(input, block.BlockSize())iv := "01234567"blockMode := cipher.NewCBCEncrypter(block, []byte(iv))crypted := make([]byte, len(input))blockMode.CryptBlocks(crypted, input)return base64.StdEncoding.EncodeToString(crypted), err
}func PKCS5Padding(input []byte, blockSize int) []byte {padding := blockSize - len(input)%blockSizepadText := bytes.Repeat([]byte{byte(padding)}, padding)return append(input, padText...)
}func main() {s, err := Encrypt("yuanli")if err != nil {panic(err)}fmt.Println(s) # Z82teOQw6FE=
}
2.3. python
class TripleDESEncryption():def __init__(self, key):self.key = keyself.iv = b'01234567'self.length = DES3.block_sizeself.des3 = DES3.new(self.key, DES3.MODE_CBC, self.iv)self.unpad = lamda date: date[0:-ord(date[-1])]def pad(self,text):count = len(text.encode('utf-8'))add = self.length - (count%self.length)entext = text + (chr(add) * add)return entextdef encrypt(self, text):res = self.des3.encrypt(self.pad(text).encode('utf-8'))message = str(base64.b64encode(res), encoding="utf8")return message