golang DES跟base64相结合加解密
来源:互联网 发布:简单c语言程序 编辑:程序博客网 时间:2024/05/16 17:43
// DEStest project DEStest.go
//注意base64对中文不同编码加解密结果不一样,即UTF-8跟GBKpackage mainimport ("bytes""crypto/cipher""crypto/des""encoding/base64""fmt""github.com/axgle/mahonia")//DES加密func DesEncrypt(origData, key []byte) (string, error) {//UTF-8 to GBKvar enc mahonia.Encoderenc = mahonia.NewEncoder("gbk")origDataStr := enc.ConvertString(string(origData))origData = []byte(origDataStr)block, err := des.NewCipher(key)if err != nil {return "", err}origData = PKCS5Padding(origData, block.BlockSize())// origData = ZeroPadding(origData, block.BlockSize())blockMode := cipher.NewCBCEncrypter(block, key)crypted := make([]byte, len(origData))// 根据CryptBlocks方法的说明,如下方式初始化crypted也可以//crypted := origDatablockMode.CryptBlocks(crypted, origData)//base64加密encodeString := base64.StdEncoding.EncodeToString(crypted)return encodeString, nil}func PKCS5Padding(ciphertext []byte, blockSize int) []byte {padding := blockSize - len(ciphertext)%blockSizepadtext := bytes.Repeat([]byte{byte(padding)}, padding)return append(ciphertext, padtext...)}//DES解密func DesDecrypt(encodeString string, key []byte) (string, error) {var dec mahonia.Decoder//base64解密crypted, err := base64.StdEncoding.DecodeString(encodeString)block, err := des.NewCipher(key)if err != nil {return "", err}blockMode := cipher.NewCBCDecrypter(block, key)origData := cryptedblockMode.CryptBlocks(origData, crypted)//origData = PKCS5UnPadding(origData)origData = ZeroUnPadding(origData)//GBK to UTF-8dec = mahonia.NewDecoder("gbk")origDataStr := dec.ConvertString(string(origData))return origDataStr, nil}func ZeroUnPadding(origData []byte) []byte {length := len(origData)unpadding := int(origData[length-1])return origData[:(length - unpadding)]}func main() {b := []byte("中国人")c := []byte("12345678")a, _ := DesEncrypt(b, c)fmt.Println(a)q, _ := DesDecrypt(a, c)fmt.Println(q)}
阅读全文
0 0
- golang DES跟base64相结合加解密
- base64加解密 des加解密
- golang--base64编码加des加密
- iOS des加解密 base64输出
- android中的MD5、Base64、DES/3DES/ADES加解密
- BASE64转换,内含:IOS自带DES加解密
- BASE64转换,内含:IOS自带DES加解密
- [JAVA加解密]DES,AES,Base64编码,PBE
- BASE64转换,内含:IOS自带DES加解密
- Java加解密——Base64与DES
- android JNI RSA 3DES BASE64 加解密实现
- java中 Base64,MD5,DES,RSA 加解密
- DES,RSA加解密,base64格式字符串转换,字典排序
- DES+Base64 加密、解密
- Java,C#的DES加解密DES(非base64 可url传递)
- Java,C#的DES加解密DES(非base64 可url传递)
- Java 对称加解密(DES,3DES,ASE)和BASE64
- DES加解密
- PAT练习-数素数
- 三层架构(我的理解及详细分析)
- 摘录小知识点
- Linux0.01内核三之轮转到子进程执行
- TCP报文标志位--URG,PSH调研
- golang DES跟base64相结合加解密
- opencv将二值图序列反转并腐蚀处理
- Linux关机开机
- iOS MVVM模式总结
- Runtime基础使用场景-拦截替换方法(class_addMethod ,class_replaceMethod和method_exchangeImplementations)
- 1.基本程序设计
- 仿Nice首页图片列表9图样式,并实现拖拽效果
- 卡尔曼滤波 -- 从推导到应用(一)
- 二次学习java