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