Go语⾔解密上篇中⽤javaaes实现的加密
上⼀篇中加密的梅须逊雪三分⽩,雪却输梅⼀段⾹。使⽤go语⾔解密。
java加密方式有哪些解密代码如下:
<
package util
import (
"crypto/cipher"
"crypto/aes"
"encoding/hex"
"fmt"
)
type Aes struct {
}
//解密
func (this *Aes) CBCDecrypter(key []byte, content_str string) (strDesc string, err error) {
content,_ :=hex.DecodeString(content_str)
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
if len(content) < aes.BlockSize {
panic("content too short")
}
//初始化向量,和上⼀篇中java加密使⽤的iv相同
iv :=[]byte("abcdefghijk1mnop")
// CBC mode always works in whole blocks.
if len(content)%aes.BlockSize != 0 {
panic("content is not a multiple of the block size")
}
mode := cipher.NewCBCDecrypter(block, iv)
// CryptBlocks可以原地更新
mode.CryptBlocks(content, content)
//fmt.Println(strings.Trim(string(content),"\u0005")+ "++")
fmt.Println(string(content))
return string(content), nil
}
测试⽅法为:
func TestAesDecrypt(t *testing.T) {
aes :=Aes{}
//key为上⼀篇java中加密使⽤的key,content_str为梅须逊雪三分⽩,雪却输梅⼀段⾹加密后的字符串。
key :=[]byte("0123456789abcdef")
content_str :="a5856355ef87955f0f112970495502ebe61b9bce4998bc777c9b383d608c1ba2da97f377914354d2e0d6500d1dac786aa69e593a67a17030389624223c5ee8fd" aes.CBCDecrypter(key, content_str)
}
运⾏测试⽅法得到如下解密内容,可见已完成解密:
梅须逊雪三分⽩,雪却输梅⼀段⾹。
注意:这⾥输出的是以\u0005为分隔符,其他为空的6个字符串,第⼀个字符串为梅须逊雪三分⽩,雪却输梅⼀段⾹。可⽤如下⽅法截取:strings.Split(content, "\u0005")[0]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论