Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用openssl命令行加密字符串_Linux_Openssl - Fatal编程技术网

Linux 使用openssl命令行加密字符串

Linux 使用openssl命令行加密字符串,linux,openssl,Linux,Openssl,我有一个16字节的字符,我想使用openssl将其加密为一个16字节的加密字符串 然后需要将该加密字符串(人类可读格式)提供给将使用它的用户,并将该字符串解密为其原始16字节形式,以进行比较和身份验证。有谁能告诉我如何使用openssl命令行实现这一点 提前谢谢 这里有一种在命令行上使用openssl加密字符串的方法(必须输入密码两次): 以下是输出结果: U2FsdGVkX1/6LATntslD80T2HEIn3A0BqxarNfwbg31D2kI00dYbmBo8Mqt42PIm 编辑:据

我有一个16字节的字符,我想使用openssl将其加密为一个16字节的加密字符串

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


提前谢谢

这里有一种在命令行上使用openssl加密字符串的方法(必须输入密码两次):

以下是输出结果:

U2FsdGVkX1/6LATntslD80T2HEIn3A0BqxarNfwbg31D2kI00dYbmBo8Mqt42PIm
编辑:据我所知,您无法控制输出的字节数。您可以对其进行b64或十六进制编码,但仅此而已。此外,如果要将该字符串保存到文件而不是标准输出,请使用-out选项

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

我相信您正在寻找保留格式的加密。我认为需要注意的是,您必须从一个16字节的人类可读字符串开始。Phillip Rogaway有一篇关于技术的论文:。这篇文章有很多内容,而且它不能放在堆栈溢出的单个段落中

如果您可以从一个较短的字符串开始,并使用OCB、OFB或CTR等流模式,那么您可以对最终字符串进行Base64编码,使结果为16个字节且人类可读。Base64以3的速率扩展→ 4(3个未编码扩展为4个编码),因此您需要一个长度为12个字符的较短字符串来实现16个人类可读字符

据我所知,没有命令行工具可以在本地完成这项工作。您可以在命令行上使用带有AES/CTR的OpenSSL,并通过
base64
命令将其传输。以下内容很接近,但以11个字符(而不是12个字符)开头:

此外,您还需要了解te
-k
选项(以及与此相关的
-k
),以及它如何派生密钥,以便您可以在OpenSSL命令之外执行此操作(如果需要)。

试试这个

$ 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
试试这个:

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

openssl列表密码命令

列出所有可用密码。

将16字节加密为16字节不太可能产生人类可读的字符串。+1重新打开。这里要问的问题是100%显而易见的。不过我要重申一下:如何使用
openssl
命令加密字符串?这不是一项明显的任务,用户提供了其请求的上下文。@G-Wiz:“如何使用openssl命令加密字符串”-这是关于堆栈溢出的主题吗?它似乎与编程无关。这听起来像是对命令的帮助请求,这更适合于@jww,我不反对。但是这个问题应该被迁移,而不是结束。谢谢,但是有没有其他方法可以在Linux中使用命令行加密16个字符的字符串并生成16个字符的加密字符串?为什么输出必须正好是16字节?为什么这很重要?为什么您使用
-aes-256-cbc
而不是
-aes-256
?区别是什么?“…字符串将被解密为其原始的16字节形式以进行比较和身份验证”-您有任何密钥管理要求吗?用户如何获得密钥?这会发出警告“使用-iter或-pbkdf2会更好”。我应该使用什么命令呢?请注意“加密实用程序不支持XTS模式下的密码”。正如迈耶先生所说,非常遗憾的是,最好的加密和身份验证同时运行,如-aes-256-gcm,在命令行上不支持。此命令确实有效,但向我显示了一条警告:
***警告:使用了不推荐的密钥派生。使用-iter或-pbkdf2会更好。
因此我在/tCC7mTw3AWPn2中添加了
-pbkdf2
参数并运行
$echo 12345678901 | openssl enc-e-base64-aes-128-ctr-pbkdf2-nopad-nosalt-k secret_密码以避免此警告
-nopad
不会影响输出,因此:
echo 12345678901 | openssl enc-e-base64-aes-128-ctr-nosalt-pbkdf2-k secret\u密码
产生与
echo 12345678901 | openssl enc-e-base64-aes-128-ctr-nopad-nosalt-pbkdf2-k secret\u密码相同的输出
$ echo "a_byte_character" | openssl enc -base64
-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