Go实现AES加密解密【模拟Java SHA1PRNG处理】
package leyangjun
import (
"bytes"
"crypto/aes"
"crypto/sha1"
"errors"
)
const EncryptKey = "leyangjun_test"
//解密【模拟了Java SHA1PRNG处理】
func Decrypt(data string) (string, error) {
dataByte := Hex2bin(data)
key, err := AesSha1prng([]byte(EncryptKey), 128)
if err != nil {
return "", err
}
block, err := aes.NewCipher(generateKey(key))
if err != nil {
return "", err
}
decrypted := make([]byte, len(dataByte))
size := block.BlockSize()
for bs, be := 0, size; bs < len(dataByte); bs, be = bs+size, be+size {
block.Decrypt(decrypted[bs:be], dataByte[bs:be])
}
decrypted = PKCS5UnPadding(decrypted)
return string(decrypted), nil
}
//解密【模拟了Java SHA1PRNG处理】
func Encrypt(data []byte) (string, error) {
key, err := AesSha1prng([]byte(EncryptKey), 128)
if err != nil {
return "", err
}
block, err := aes.NewCipher(generateKey(key))
if err != nil {
return "", err
}
data = PKCS5Padding(data, blo

本文介绍了如何使用Go语言实现AES加密解密,并详细讲解了如何模拟Java的SHA1PRNG处理过程,为Go开发者提供了一种在加密过程中实现类似Java随机数生成的方法。
最低0.47元/天 解锁文章
117

被折叠的 条评论
为什么被折叠?



