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
}
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)%blockSize
padText := 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 = key
self.iv = b'01234567'
self.length = DES3.block_size
self.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 entext
def encrypt(self, text):
res = self.des3.encrypt(self.pad(text).encode('utf-8'))
message = str(base64.b64encode(res), encoding="utf8")
return message