私は16バイトの暗号化された文字列にopensslを使用して暗号化したい16バイトの文字を持っています。
次に、この暗号化された文字列(人間が読み取れる形式)を使用するユーザーに提供する必要があり、文字列は比較と認証のために元の16バイト形式に復号化されます。 opensslコマンドラインでこれがどのように可能になるかを教えてください。
前もって感謝します。
コマンドラインでopensslを使用して文字列を暗号化する1つの方法を次に示します(パスワードを2回入力する必要があります)。
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または16進数でエンコードできますが、それで十分です。また、その文字列を標準出力ではなくファイルに保存する場合は、-outオプションを使用します。
これを試して:
echo 'foo' | openssl aes-256-cbc -a -salt
echo 'U2FsdGVkX1/QGdl4syQE8bLFSr2HzoAlcG299U/T/Xk=' | openssl aes-256-cbc -a -d -salt
走る
openssl list-cipher-commands
使用可能なすべての暗号をリストします。
私はopensslを使用して16バイトの暗号化された文字列(人間が読める形式)に暗号化したい16バイトの文字を持っています
Format Preserving Encryptionを探していると思います。警告は、16バイトの人間が読める文字列から始めなければならないことだと思います。 Phillip Rogawayには、テクノロジーに関する論文があります: フォーマット保存暗号化の概要 。論文には多くのことがありますが、Stack Overflowの1つの段落には収まりません。
短い文字列から始めてOCB、OFB、CTRなどのストリーミングモードを使用できる場合は、結果が16バイトで人間が読み取れるように、最終文字列をBase64でエンコードできます。 Base64は3→4の速度で拡張します(エンコードされていない3はエンコード4に拡張されます)。したがって、人間が読み取れる16文字を実現するには、12文字の短い文字列が必要です。
私の知る限り、それをネイティブに実行するコマンドラインツールはありません。 AES/CTRを使用してコマンドラインでOpenSSLを使用し、base64
コマンド。以下は近づきますが、12文字ではなく11文字で始まります:
$ 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