使用openssl命令行加密字符串

时间:2012-04-11 13:21:55

标签: linux openssl

我有一个16字节的字符,我想用openssl加密成16字节的加密字符串。

然后需要将这个加密的字符串(以人类可读的格式)提供给使用它的用户,并将字符串解密为其原始的16字节格式以进行比较和验证。任何人都可以告诉我如何用openssl命令行实现这一点。

提前致谢。

4 个答案:

答案 0 :(得分:24)

这是在命令行上使用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:

这是输出的样子:

U2FsdGVkX1/6LATntslD80T2HEIn3A0BqxarNfwbg31D2kI00dYbmBo8Mqt42PIm

编辑:据我所知,你无法控制输出的字节数。您可以使用b64或hex编码,但就是这样。此外,如果要将该字符串保存到文件而不是stdout,请使用-out选项。

答案 1 :(得分:5)

  

我有一个16字节的字符,我想用openssl加密成一个16字节的加密字符串[以人类可读的格式]

我相信您正在寻找格式保留加密。我认为需要注意的是,你必须从一个16字节的人类可读字符串开始。 Phillip Rogaway有一篇关于技术的论文:Synopsis of Format-Preserving Encryption。这篇论文有很多内容,它不能适合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

另外,你确实需要了解te -k选项(以及-K这个问题),以及它如何派生出一个键,以便你可以在OpenSSL命令(如果需要)。

答案 2 :(得分:5)

试试这个:

Cache-Control:max-age=0, no-cache

运行

echo 'foo' | openssl aes-256-cbc -a -salt
echo 'U2FsdGVkX1/QGdl4syQE8bLFSr2HzoAlcG299U/T/Xk=' | openssl aes-256-cbc -a -d -salt

列出所有可用的密码。

答案 3 :(得分:2)

试试这个

$ echo "a_byte_character" | openssl enc -base64

你有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