首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >生成AES-256-GCM密钥

生成AES-256-GCM密钥
EN

Security用户
提问于 2022-11-06 12:24:43
回答 2查看 3.1K关注 0票数 1

我正在使用aes-256-gcm加密。我使用了文档中提供的一个示例密钥,它运行得很好。

我还尝试了一个从这里生成的密钥,它运行得很好。这里没有指定gcm的选项,但是生成的密钥可以正常工作。

我试图使用openssl命令生成密钥

openssl enc -aes-256-gcm -k secret -P -md sha1

来自这里的灵感,但我得到了错误

enc: AEAD ciphers not supported

如何使用命令行实用程序生成.pem格式的键?

从文档中运行的密钥示例如下所示

4u7x!A%D*G-KaPdRgUkXp2s5v8y/B?E(

EN

回答 2

Security用户

发布于 2022-11-06 14:24:42

这里有几件东西要打开。

首先,不管所使用的AES模式(GCM、CBC、ECB、CTR等),如果您使用的是AES- 256,那么键的长度必须是256位。要生成以十六进制格式编码的随机256位密钥,可以使用以下命令:

代码语言:javascript
运行
复制
head /dev/urandom | sha256sum

这会产生一个随机256位密钥,例如:

代码语言:javascript
运行
复制
3fd00454580de44ea216d8b7b234267a2a6a6aec7e56d2b38e641a45597af0f2

现在,您可以将此密钥与带有openssl的iv一起使用,使用aes-256-cbc加密一些纯文本,如下所示:

代码语言:javascript
运行
复制
echo -n 'hello world' |  openssl aes-256-cbc -e -K 3fd00454580de44ea216d8b7b234267a2a6a6aec7e56d2b38e641a45597af0f2 -iv 302775dfc35a35c8081bbc6fdeacbd86 | xxd -p

这会产生密码文本:

代码语言:javascript
运行
复制
7d5b44298bf959af149a0086d79334e6

现在,您可以使用相同的密钥和iv解密密文,以生成原始明文,如下所示:

代码语言:javascript
运行
复制
echo -n '7d5b44298bf959af149a0086d79334e6' | xxd -p -r | openssl aes-256-cbc -d -K 3fd00454580de44ea216d8b7b234267a2a6a6aec7e56d2b38e641a45597af0f2 -iv 302775dfc35a35c8081bbc6fdeacbd86

这就产生了:

代码语言:javascript
运行
复制
hello world

但是,您询问了如何使用openssl使用GCM模式进行AES加密,而不是使用CBC模式。不幸的是,openssl的命令行接口不可能做到这一点,因为不支持AES-GCM。有关这方面的更多信息,请参见https://www.openssl.org/docs/man1.1.1/man1/enc.html,然后向下滚动到“受支持的密码”部分,并注意其中的内容如下:

enc程序不支持CCM和GCM等认证加密模式,今后也不支持这种模式。必要时,enc接口必须开始流输出(例如,在不使用-out时对标准输出进行流输出),才能验证身份验证标记,从而导致enc在开始处理不受信任的数据并在身份验证失败时无法回滚的管道中使用。

票数 3
EN

Security用户

发布于 2022-11-06 15:08:06

我们只在很难手动操作的时候才谈到密钥生成。例如,要为RSA或25519这样的特定ECC曲线创建一对密钥,需要使用较大的数字进行大量计算。

AES-256的密钥可以很容易地手工创建。任何256位长的位序列都可以用作AES-256密钥.您不必使用任何生成器并手动创建有效的密钥。人类生成的密钥通常比基于质量熵源的质量随机生成器生成的熵小,这就是为什么建议使用生成器的原因。

PEM格式仅用于PKI。PKI使用非对称加密。其中,as AES是对称算法。在AES中没有私钥、公钥、证书,这就是PEM不适用于AES的原因。

票数 3
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/266130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档