我正在使用这个库进行会话.

https://github.com/codegangsta/martini-contrib/tree/master/sessions

它说:

It is recommended to use an authentication key with 32 or 64 bytes. The encryption key, if set, must be either 16, 24, or 32 bytes to select AES-128, AES-192, or AES-256 modes.

我如何生成一个64字节的密钥,它是不是像[]byte"64characterslongstring"一样简单,我认为它并不总是那么简单?

推荐答案

要生成64个随机字节的切片,请执行以下操作:

package main

import "crypto/rand"

func main() {
    key := make([]byte, 64)

    _, err := rand.Read(key)
    if err != nil {
        // handle error here
    }
}

演示here.

Go相关问答推荐

golang-jWT签名无效

CGO如何转换为文件*类型

macOS上GoLand 2023.3.4中的代码导航

禁用Golang中的终端

如何在围棋中从多部分.Part中获取多部分.文件而不保存到磁盘?

如何在 Chi Router 的受保护路由下提供静态文件(尤其是图像)?

Golang:访问any类型泛型上的字段

切片的下限和上限

GORM中是否可能自动迁移具有循环关系的表?

如何从Go项目连接Microsoft Access数据库?

如何忽略打印达到最大深度限制 go colly

更改多对多连接表的名称

使用 ssh 从私有 gilab 仓库导入一个 go 项目:未知修订

拆分文本并按空格获取字符串数组,如果文本长度超过 500,则获取字符串数组

枚举的 Golang 验证器自定义验证规则

Golang - 客户 Unmarshaler/Marshaler 在指针上具有 nil/null 值

Go:等待多个通道的性能损失

使用正则表达式拆分具有相同标题的数据块

go routine 和接收错误或成功的通道

如何断言类型是指向golang中接口的指针