使用openssl命令行encryptionstring

我有一个16字节的字符,我想用opensslencryption成16字节的encryptionstring。

这个encryption的string(以可读的格式)需要被提供给使用它的用户,并且该string将被解密为其原始的16字节forms以用于比较和authentication。 任何人都可以告诉我这将是可能的openssl命令行。

提前致谢。

以下是在命令行上使用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或十六进制编码,但是这是关于它。 另外,如果要将该字符串保存到文件而不是stdout,请使用-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个):

 $ echo 12345678901 | openssl enc -e -base64 -aes-128-ctr -nopad -nosalt -k secret_password cSTzU8+UPQQwpRAq 

另外,您还需要了解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/QGdl4syQE8bLFSr2HzoAlcG299U/T/Xk=' | openssl aes-256-cbc -a -d -salt 

 openssl list-cipher-commands 

列出所有可用的密码。