golang DES加密解密

2021-08-18 17:28:32 字數 2008 閱讀 5633

我寫了乙個例子,方便看懂或者直接拿來用。

直接上**:

package main

import (

"crypto/des"

"fmt"

"crypto/cipher"

"encoding/hex"

"bytes"

)func

main()

//cbc

加密func

encryptdes_cbc(src, key

string) string

data = pkcs5padding(data, block.blocksize())

//獲取cbc

加密模式

iv := keybyte //

用金鑰作為向量

(不建議這樣使用

)mode := cipher.newcbcencrypter(block, iv)

out := make(

byte, len(data))

mode.cryptblocks(out, data)

return fmt.sprintf("%x", out)

}//cbc

解密func

decryptdes_cbc(src, key

string) string

block, err := des.newcipher(keybyte)

if err != nil

iv := keybyte //

用金鑰作為向量

(不建議這樣使用

)mode := cipher.newcbcdecrypter(block, iv)

plaintext := make(

byte, len(data))

mode.cryptblocks(plaintext, data)

plaintext = pkcs5unpadding(plaintext)

return

string(plaintext)

}//ecb

加密func

encryptdes_ecb(src, key

string) string

bs := block.blocksize()

//對明文資料進行補碼

data = pkcs5padding(data, bs)

if len(data)%bs != 0

out := make(

byte, len(data))

dst := out

for

len(data) > 0

return fmt.sprintf("%x", out)

}//ecb

解密func

decryptdes_ecb(src, key

string) string

keybyte :=

byte(key)

block, err := des.newcipher(keybyte)

if err != nil

bs := block.blocksize()

if len(data)%bs != 0

out := make(

byte, len(data))

dst := out

for

len(data) > 0

out = pkcs5unpadding(out)

return

string(out)}//

明文補碼演算法

func

pkcs5padding(ciphertext

byte, blocksize

int)

byte

, padding)

return }//

明文減碼演算法

func

pkcs5unpadding(origdata

byte)

byte

des vue 加密解密 DES加密 解密

外掛程式描述 des data encryption standard 是發明最早的最廣泛使用的分組對稱加密演算法。des演算法簡介 des data encryption standard 是發明最早的最廣泛使用的分組對稱加密演算法。des演算法的入口引數有三個 key data mode。其中k...

檔案加密解密 URl引數加密解密

sliverlight 加密解密 public static class encryption endregion region silverlight密碼解密 解密資料 加密後的字串 加密前的字串 public static string decrypt string input endregio...

加密解密 替換加解密

加密解密 替換加解密 按一定規則重新替換明文的字元生成密文。可以有多種替換方式。include void encrypt char strdata,int ncode printf original s n strdata p strdata for i 0 i nlen i printf enco...