golang 加密解密

2022-09-23 03:52:02 字數 1748 閱讀 9757

package main

import (

"bytes"

"crypto/aes"

"crypto/cipher"

"encoding/base64"

"errors"

"fmt"

)//高階加密標準(adevanced encryption standard ,aes)

//16,24,32位字串的話,分別對應aes-128,aes-192,aes-256 加密方法

//key不能洩露

var pwdkey = byte("dis**#kkkdjjskdi")

//pkcs7 填充模式

func pkcs7padding(ciphertext byte, blocksize int) byte 複製padding個,然後合併成新的位元組切片返回

padtext := bytes.repeat(byte, padding)

}//填充的反向操作,刪除填充字串

func pkcs7unpadding(origdata byte) (byte, error) else

}//實現加密

func aesecrypt(origdata byte, key byte) (byte, error)

//獲取塊的大小

blocksize := block.blocksize()

//對資料進行填充,讓資料長度滿足需求

origdata = pkcs7padding(origdata, blocksize)

//採用aes加密方法中cbc加密模式

blocmode := cipher.newcbcencrypter(block, key[:blocksize])

crypted := make(byte, len(origdata))

//執行加密

blocmode.cryptblocks(crypted, origdata)

return crypted, nil

}//實現解密

func aesdecrypt(cypted byte, key byte) (byte, error)

//獲取塊大小

blocksize := block.blocksize()

//建立加密客戶端例項

blockmode := cipher.newcbcdecrypter(block, key[:blocksize])

origdata := make(byte, len(cypted))

//這個函式也可以用來解密

blockmode.cryptblocks(origdata, cypted)

//去除填充字串

origdata, err = pkcs7unpadding(origdata)

if err != nil

return origdata, err

}//加密base64

func enpwdcode(pwd byte) (string, error)

return base64.stdencoding.encodetostring(result), err

}//解密

func depwdcode(pwd string) (byte, error)

//執行aes解密

return aesdecrypt(pwdbyte, pwdkey)

}func main()

其他/加密解密/加密解密.html

PHP加密解密

目錄非對稱加密 為了保證網路傳輸資料的安全性,涉及敏感資料的傳輸,最好對資料預先加密,然後再在網路上進行傳輸,同時,還要保證資料在另一端是可...

DES加密解密

des是一種對稱加密演算法,所謂對稱加密演算法即 加密和解密使用相同金鑰的演算法 注意 des加密和解密過程中,金鑰長度都必須是8的倍數 public class des 測試 public static void main string args catch exception e1 加密 param ...

Python 加密 解密

coding utf 8 time 2020 11 4 19 02 author file jar encryption util py version 1 0 class jarencryptionutil staticmethod def str encryption ascii str 1 s...