Golang中,Aes加解密

2022-01-22 02:53:32 字數 1419 閱讀 3815

今天在用golang解析php那邊用aes加密的乙個key。網上大多是用base64將結果編碼一下。而且用到了向量。我php

那邊沒有用到向量。所以golang這邊也是要去掉的。參考**的改了下。能夠和php通用。

另外,需要注意的是加密的key只能是16,24,32.分別對應的是aes-128,aes-192,aes-256等

package main

import (

​ "bytes"

​ "crypto/aes"

​ "crypto/cipher"

​ "encoding/base64"

​ "encoding/hex"

​ "errors"

​ "fmt"

)//填充

func pad(src byte) byte , padding)

}func unpad(src byte) (byte, error)

​ return src[:(length - unpadding)], nil

}func encrypt(key byte, text string) (string, error)

​ msg := pad(byte(text))

​ ciphertext := make(byte, aes.blocksize+len(msg))

​ //沒有向量,用的空切片

​ iv := make(byte,aes.blocksize)

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

​ mode.cryptblocks(ciphertext[aes.blocksize:], msg)

​ finalmsg := (base64.stdencoding.encodetostring(ciphertext))

​ fmt.println(hex.encodetostring(byte(ciphertext[aes.blocksize:])))

​ return finalmsg, nil

}func decrypt(key byte, text string) (string, error)

​ decodedmsg,_ := hex.decodestring(text)

​ iv :=make(byte,aes.blocksize)

​ msg := decodedmsg

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

​ mode.cryptblocks(msg,msg)

​ unpadmsg, err := unpad(msg)

​ if err != nil

​ return string(unpadmsg), nil

}func main()

golang使用aes庫實現加解密

golang實現加密解密的庫很多,這裡使用的是aes庫 base64庫來實現.使用時,需要指定乙個私鑰,來進行加解密,這裡指定是 var aeskey byte 321423u9y8d2fwfl 上 package main import fmt crypto cipher crypto aes b...

AES對稱加解密

python實現aes對稱加解密 關於aes對稱加密的概念網上很多,在此不在贅述,直接上 import base64 from crypto.cipher import aes aes加密解密工具類 資料塊128位 key 為16位 iv 為16位 aes加密模式為cbc 填充 pkcs7paddi...

AES 對稱加解密

1.生成aes key aes根據密碼生成key param password return public static key createkey string password catch exception e return null 2.aes加密 ecb模式 aes加密操作,使用ecb模式...