我寫了乙個例子,方便看懂或者直接拿來用。
直接上**:
package mainimport (
"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...