千家信息网

golang中DES怎么用

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章将为大家详细讲解有关golang中DES怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。package utilimport ( "byt
千家信息网最后更新 2025年02月02日golang中DES怎么用

这篇文章将为大家详细讲解有关golang中DES怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

package utilimport (        "bytes"        "crypto/cipher"        "crypto/des"        "encoding/base64")var (        iv  = []byte{1, 2, 3, 4, 5, 6, 7, 8}        key = []byte("java"))//DES加密func DesEncrypt(data []byte) string {        result, _ := DesEncrypt(data, key, iv)        return base64.StdEncoding.EncodeToString(result)}//DES解密func DesDecrypt(base64Str string) string {        result, err := base64.StdEncoding.DecodeString(base64Str)        if err != nil {                return ""        }        origData, err := DesDecrypt(result, key, iv)        if err != nil {                return ""        }        return string(origData)}func DesEncrypt(origData, key, iv []byte) ([]byte, error) {        block, err := des.NewCipher(key)        if err != nil {                return nil, err        }        origData = PKCS5Padding(origData, block.BlockSize())        blockMode := cipher.NewCBCEncrypter(block, iv)        crypted := make([]byte, len(origData))        blockMode.CryptBlocks(crypted, origData)        return crypted, nil}func DesDecrypt(crypted, key, iv []byte) ([]byte, error) {        block, err := des.NewCipher(key)        if err != nil {                return nil, err        }        blockMode := cipher.NewCBCDecrypter(block, iv)        origData := make([]byte, len(crypted))        blockMode.CryptBlocks(origData, crypted)        origData = PKCS5UnPadding(origData)        return origData, nil}func ZeroUnPadding(origData []byte) []byte {        return bytes.TrimRightFunc(origData, func(r rune) bool {                return r == rune(0)        })}func PKCS5Padding(ciphertext []byte, blockSize int) []byte {        padding := blockSize - len(ciphertext)%blockSize        padtext := bytes.Repeat([]byte{byte(padding)}, padding)        return append(ciphertext, padtext...)}func PKCS5UnPadding(origData []byte) []byte {        length := len(origData)        unpadding := int(origData[length-1])        return origData[:(length - unpadding)]}

关于"golang中DES怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0