我有一个16字节的字符,我想用openssl加密成16字节的加密字符串.
然后需要将该加密字符串(以人类可读格式)提供给将使用它的用户,并且该字符串将被解密为其原始的16字节形式以进行比较和认证.有谁能告诉我如何用openssl命令行实现这一点.
提前致谢.
011*_*110 26
这是在命令行上使用openssl加密字符串的一种方法(必须输入密码两次):
echo -n "aaaabbbbccccdddd" | openssl enc -e -aes-256-cbc -a -salt
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
Run Code Online (Sandbox Code Playgroud)
这是输出的样子:
U2FsdGVkX1/6LATntslD80T2HEIn3A0BqxarNfwbg31D2kI00dYbmBo8Mqt42PIm
Run Code Online (Sandbox Code Playgroud)
编辑:据我所知,你无法控制输出的字节数.您可以使用b64或hex编码,但就是这样.此外,如果要将该字符串保存到文件而不是stdout,请使用-out选项.
小智 6
尝试这个:
echo 'foo' | openssl aes-256-cbc -a -salt
echo 'U2FsdGVkX1/QGdl4syQE8bLFSr2HzoAlcG299U/T/Xk=' | openssl aes-256-cbc -a -d -salt
Run Code Online (Sandbox Code Playgroud)
跑
openssl list-cipher-commands
Run Code Online (Sandbox Code Playgroud)
列出所有可用的密码。
我有一个16字节的字符,我想用openssl加密成一个16字节的加密字符串[以人类可读的格式]
我相信您正在寻找格式保留加密.我认为需要注意的是,你必须从一个16字节的人类可读字符串开始.Phillip Rogaway有一篇关于技术的论文:格式保留加密概要.这篇论文有很多内容,它不能适合Stack Overflow上的一个段落.
如果您可以从较短的字符串开始并使用OCB,OFB或CTR之类的流模式,那么您可以对最终字符串进行Base64编码,以便结果为16字节且可读.Base64以3→4的速率扩展(3个未编码扩展为4个编码),因此您需要一个长度为12个字符的较短字符串来实现16个人类可读字符.
据我所知,没有命令行工具本身可以做到这一点.您可以在命令行上使用带有AES/CTR的OpenSSL并通过base64
命令对其进行管道传输.以下是关闭,但它以11个字符(而不是12个)开头:
$ echo 12345678901 | openssl enc -e -base64 -aes-128-ctr -nopad -nosalt -k secret_password
cSTzU8+UPQQwpRAq
Run Code Online (Sandbox Code Playgroud)
此外,您确实需要了解te -k
选项(以及-K
此类问题),以及它如何派生密钥以便您可以在OpenSSL命令之外(如果需要)执行此操作.
尝试这个
$ echo "a_byte_character" | openssl enc -base64
Run Code Online (Sandbox Code Playgroud)
你有 100 多种密码类型
-aes-128-cbc -aes-128-cfb -aes-128-cfb1
-aes-128-cfb8 -aes-128-ctr -aes-128-ecb
-aes-128-gcm -aes-128-ofb -aes-128-xts
-aes-192-cbc -aes-192-cfb -aes-192-cfb1
-aes-192-cfb8 -aes-192-ctr -aes-192-ecb
-aes-192-gcm -aes-192-ofb -aes-256-cbc
-aes-256-cfb -aes-256-cfb1 -aes-256-cfb8
-aes-256-ctr -aes-256-ecb -aes-256-gcm
-aes-256-ofb -aes-256-xts -aes128
-aes192 -aes256 -bf
-bf-cbc -bf-cfb -bf-ecb
-bf-ofb -blowfish -camellia-128-cbc
-camellia-128-cfb -camellia-128-cfb1 -camellia-128-cfb8
-camellia-128-ecb -camellia-128-ofb -camellia-192-cbc
-camellia-192-cfb -camellia-192-cfb1 -camellia-192-cfb8
-camellia-192-ecb -camellia-192-ofb -camellia-256-cbc
-camellia-256-cfb -camellia-256-cfb1 -camellia-256-cfb8
-camellia-256-ecb -camellia-256-ofb -camellia128
-camellia192 -camellia256 -cast
-cast-cbc -cast5-cbc -cast5-cfb
-cast5-ecb -cast5-ofb -des
-des-cbc -des-cfb -des-cfb1
-des-cfb8 -des-ecb -des-ede
-des-ede-cbc -des-ede-cfb -des-ede-ofb
-des-ede3 -des-ede3-cbc -des-ede3-cfb
-des-ede3-cfb1 -des-ede3-cfb8 -des-ede3-ofb
-des-ofb -des3 -desx
-desx-cbc -id-aes128-GCM -id-aes192-GCM
-id-aes256-GCM -rc2 -rc2-40-cbc
-rc2-64-cbc -rc2-cbc -rc2-cfb
-rc2-ecb -rc2-ofb -rc4
-rc4-40 -rc4-hmac-md5 -seed
-seed-cbc -seed-cfb -seed-ecb
-seed-ofb
Run Code Online (Sandbox Code Playgroud)
小智 5
我无法使用带有 -n 的 echo 使其工作。这对我有用:
加密:
echo "PLAINTEXT_STRING" | openssl enc -aes256 -pbkdf2 -base64
Run Code Online (Sandbox Code Playgroud)
系统会提示您提供解密密码。
解密:
echo "ENCRYPTED_STRING" | openssl aes-256-cbc -d -pbkdf2 -a
Run Code Online (Sandbox Code Playgroud)
输入解密密码进行解密。
归档时间: |
|
查看次数: |
58343 次 |
最近记录: |