2010-12-29 25 views
1

static.keyに私のランダムキーが含まれている場合、これは私のシェルスクリプトのコードです。AppleのHTTPライブストリーミングにopenssl暗号化を使用する - 問題

hexKey=$(cat static.key | hexdump -e '16/1 "%02x"') 
echo $hexKey 
hexIV="0" 
echo $hexIV 
openssl aes-128-cbc -e -in logo-1.ts -out logo-enc-1.ts -p -nosalt -K ${he-iv ${hexIV} 

実行中にエラーが発生します。

(output: 
non-hex digit 
invalid hex iv value 
: command not found 
) 

多分誰かがこの問題を知っています。私は今、何日間もそれをしています。

答えて

7

このエラーは、OpenSSLがIVに対して見ている値に、16進数以外の文字(つまり、abcdefABCDEF以外の文字)が含まれていることを意味します。

AES128キーは128/8 = 16バイトですので、キーには32文字が必要です。 IVはAESブロックサイズに対応する16バイトで、OpenSSLは1つの "0"を16バイトに変換します。これは良いコマンドの例です:

$ echo -n "hello" > in 
$ openssl aes-128-cbc -e -in in -out out -p -nosalt \ 
    -K 000102030405060708090a0b0c0d0e0f -iv 000102030405060708090a0b0c0d0e0f 
$ cat out | hexdump -e '16/1 "%02x"' 
8326dc340c564d49790650a59260fea0 

は今非進文字とIVの最後の文字を置き換え、そしてあなたが取得している同じエラーを取得していることがわかります。

$ openssl aes-128-cbc -e -in in -out out -p -nosalt \ 
    -K 000102030405060708090a0b0c0d0e0f -iv 000102030405060708090a0b0c0d0e0q 
$ cat out | hexdump -e '16/1 "%02x"' 
non-hex digit 
invalid hex iv value 

貼り付けたものが実行中の実際のコードである場合、問題は明らかです。まず、-K ${he-iv ${hexIV}はどういう意味ですか?第二に、引数-Kが鍵を与えることです。あなたはIVを与えるために-ivが欠けています。閉じ括弧もありません。最後のヒントとして

openssl aes-128-cbc -e -in logo-1.ts -out logo-enc-1.ts -p -nosalt -K $hexKey -iv $hexIV 

、あなたbashを使用している場合は、bashの引数として-xを使用してスクリプトを実行し、それがすべての出力を行います。

これはおそらくstatic.keyを想定して、あなたの問題を解決しますが、16バイトを持っていますこれはbashシェルのキー値を格納する過程で

$ /bin/bash -x my_script 
+ hexKey=0 
+ hexIV=0 
+ openssl aes-128-cbc -e -in in -out out -p -nosalt -K 0 -iv 0 
+0

感謝することができ願っています!!!!! –

1

を、いくつかの末尾にゴミが(nullまたは改行のいずれか)が含まれました:それは変数を展開した後、ライン、それはあなたがそれをやっているまさに見ることができるように実行されますはbですeingがopensslに渡され、16進数以外の文字について不平を言った。

これを128ビット/ 32アスキー文字の16進数とIVで修正するには、bashにこのような最初の32文字だけを渡すように指示します(他のキーまたはivの長さは32から1/4のビット数正しい値は、使用のopensslの「印刷キーの-Pオプションを渡されていることを確認するには、キーまたはIV)

openssl aes-128-cbc -e -in logo-1.ts -out logo-enc-1.ts -p -nosalt -K ${hexKey:0:32} -iv ${hexIV:0:32} 

(UPPER CASE "-P" を注意してください)

openssl aes-128-cbc -e -in logo-1.ts -out logo-enc-1.ts -p -nosalt -K ${hexKey:0:32} -iv ${hexIV:0:32} -P 
0

に私が持っています基本的に私はこの解決法を見つけました:

暗号化:

openssl aes-256-cbc -k “choose_password_to_encrypt” -in /path_to_your_file_to_encrypt/file_to_encrypt.extension_file -out /path_to_your_file_to_dencrypt/choose_name_file_after_decrypt.extension_file.enc -a 

復号化:

openssl aes-256-cbc -k “password_chose_to_encrypt” -in /path_to_your_file_to_dencrypt/choose_name_file_after_decrypt.extension_file.enc -d -a -out /path_to_your_file_to_encrypt/file_to_encrypt.extension_file 

私はそれは非常に有用だった便利

関連する問題