Go的AES加密的默认工作模式的吗?

villins · 2013-11-01 04:21:18 · 4885 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2013-11-01 04:21:18 的主题,其中的信息可能已经有所发展或是发生改变。

如果是的话

这段Node.js加密

var cipher = crypto.createCipher('aes-128-ecb', key);
var encrypted = "";
encrypted += cipher.update(plaintext, 'binary', 'base64');

应该是转换成下面的Go代码

block, err := aes.NewCipher(key)
if err != nil {
    return nil, err
}
blockSize := block.BlockSize()
origData = PKCS5Padding(origData, blockSize)
// origData = ZeroPadding(origData, block.BlockSize())
blockMode := cipher.NewCBCEncrypter(block, key[:blockSize])
crypted := make([]byte, len(origData))
// 根据CryptBlocks方法的说明,如下方式初始化crypted也可以
// crypted := origData
blockMode.CryptBlocks(crypted, origData)
fmt.Println(base64.StdEncoding.EncodeToString(result))

可是最后得到的字符串不对。


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4885 次点击  
加入收藏 微博
1 回复  |  直到 2013-11-01 13:47:41
polaris
polaris · #1 · 11年之前

你应该看了我写的文章。

aes 这里有三种语言的版本:Go、PHP、Java,都测试过了。

如果你觉得最后得到的字符串不对,你得看看你的node代码是不是有问题。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传