2012-04-11 55 views
21

私は16バイトの暗号化文字列にopensslを使用して暗号化したい16バイトの文字を持っています。opensslコマンドラインを使用して文字列を暗号化します

(人間が読める形式で)この暗号化された文字列は、それを使用するユーザに提供する必要があり、文字列が比較し、認証のために、元の16バイトの形式に復号化されることになります。誰でもopensslコマンドラインでこれがどうなるか教えてください。

ありがとうございます。ここで

+1

16バイトから16バイトに暗号化すると人間が読める文字列になることはほとんどありません。 –

+2

+1再開。ここで何が求められているかは100%明らかです。私はそれを再考します:あなたは 'openssl'コマンドを使って文字列をどのように暗号化しますか?これは明らかな作業ではなく、ユーザーは自分の要求のコンテキストを提供します。 –

+0

@ G-Wiz:* "どのようにopensslコマンドを使って文字列を暗号化するのですか?" - Stack Overflowのトピックですか?プログラミング関連ではない*と思われる*。これは、[Super User](http://superuser.com/)に適したコマンドのヘルプのようなものです。 – jww

答えて

20

は、コマンドライン上のopensslを持つ文字列を暗号化するための1つの方法は(パスワードを2回入力する必要があります)です:私の知る限りでは:

U2FsdGVkX1/6LATntslD80T2HEIn3A0BqxarNfwbg31D2kI00dYbmBo8Mqt42PIm 

編集:

echo -n "aaaabbbbccccdddd" | openssl enc -e -aes-256-cbc -a -salt 
enter aes-256-cbc encryption password: 
Verifying - enter aes-256-cbc encryption password: 

はここで、出力は次のようになります。バイト数を制御することはできません。あなたはb64または16進数でエンコードすることができますが、それはそれです。また、その文字列をstdoutではなくファイルに保存する場合は、-outオプションを使用します。

+0

ありがとう、しかし、私は16文字の文字列を暗号化し、コマンドラインを使用してLinuxで16文字の暗号化された文字列を生成することができる他の方法があります –

+0

なぜ出力は正確に16バイトでなければなりませんか?それはなぜ重要なのでしょうか? – 01100110

+0

なぜ '-aes-256'の代わりに' -aes-256-cbc'を使うのですか?違いはなんですか? – Lucio

5

私は私はあなたが暗号化を保存フォーマットを探していると信じて

[人間が読める形式で]私は16バイトの暗号化された文字列にOpenSSLを使用して暗号化したいと思います16バイトの文字を持っています。私は注意しなければならないのは、16バイトの人間が読める文字列で始める必要があるということです。 Phillip Rogawayは技術に関する論文を持っています:Synopsis of Format-Preserving Encryption。紙にはたくさんのことがあり、スタックオーバーフローの1つの段落には収まりません。

より短い文字列で始まり、OCB、OFBまたはCTRのようなストリーミングモードを使用できる場合は、結果が16バイトで人間が読めるように、最終文字列をBase64でエンコードできます。 Base64は3→4(3つのエンコードされていないエンコードは4つのエンコードに拡張されます)のレートで展開されるので、16の人間が読める文字を得るには、12文字の短い文字列が必要です。

私が知る限り、ネイティブにコマンドラインツールはありません。コマンドラインでOpenSSLをAES/CTRで使用し、base64コマンドでパイプすることができます。以下は近づき、それは11文字(とない12)で始まる:

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

また、あなたは本当にはTE -kオプション(とそのことについては-K)を理解する必要があり、それがキーを導出する方法OpenSSLコマンドの外で(必要に応じて)実行できます。これを試してみてください

1

この

$ 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     
+1

「XTSモードの暗号はencユーティリティではサポートされていません」ということに注意してください。 –

1

を持っている:

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

実行

openssl list-cipher-commands 

を使用して、利用可能なすべての暗号をリストします。

関連する問題