• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go语言解密上篇中用javaaes实现的加密

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

上一篇java aes文件加解密中加密的梅须逊雪三分白,雪却输梅一段香。使用go语言解密。

解密代码如下:

AESUtil.go

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]

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go如何正确的使用mysqldriver发布时间:2022-07-10
下一篇:
[Go]解决golang.org模块无法下载的问题发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap