欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

密码学-3DES

发布时间:2025/3/21 编程问答 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 密码学-3DES 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

3DES加密算法

3DES加密算法的使用与DES的用法基本相同,使用方法如下:

package mainimport ("bytes""crypto/des""crypto/cipher""fmt""encoding/base64")//补码func PKCS5Padding(ciphertext []byte, blocksize int) []byte {padding := blocksize - len(ciphertext)%blocksizepadtext := bytes.Repeat([]byte{byte(padding)}, padding)return append(ciphertext, padtext...)}//3DES加密func TripleDescrypt(origData []byte, key []byte) []byte {//3DES的秘钥长度必须为24位block, _ := des.NewTripleDESCipher(key)//补码origData = PKCS5Padding(origData, block.BlockSize())//设置加密模式blockMode := cipher.NewCBCEncrypter(block, key[:8])//创建密文数组,加密crypted := make([]byte, len(origData))blockMode.CryptBlocks(crypted, origData)return crypted}//解密func TipleDesDecrypt(crypted, key []byte) [] byte {block, _ := des.NewTripleDESCipher(key)blockMode := cipher.NewCBCDecrypter(block, key[:8])origData := make([]byte, len(crypted))blockMode.CryptBlocks(origData, crypted)origData = PKCS5UnPadding(origData)return origData}//去码func PKCS5UnPadding(origData []byte) []byte {length := len(origData)// 去掉最后一个字节 unpadding 次unpadding := int(origData[length-1])return origData[:(length - unpadding)]}func main() {//长度为24bytekey := []byte("123456789012345678901234")a := base64.StdEncoding.EncodeToString(TripleDescrypt([]byte("hello world"), key))//加密fmt.Println(a)}

总结

以上是生活随笔为你收集整理的密码学-3DES的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。