2013-04-16 11 views
9

Rubyでaes-128-ccm暗号化文字列のSJCL復号化を実装しようとしています。 similar questionを読んだ後、これはOpenSSLライブラリの新しいバージョンでサポートされるはずですので、githubから/ optに開発版をインストールしました。RubyでSJCL AES-128-CCMを復号する

これを実行した後、私はaes-128-ccmリスト内の暗号私はは/ opt/binに/ opensslの暗号を実行します。

ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:SRP-DSS-AES-256-CBC-SHA:SRP-RSA-AES-256-CBC-SHA:DH-DSS-AES256-GCM-SHA384:DHE-DSS-AES256-GCM-SHA384:DH-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:DH-RSA-AES256-SHA256:DH-DSS-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DH-RSA-AES256-SHA:DH-DSS-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:DH-RSA-CAMELLIA256-SHA:DH-DSS-CAMELLIA256-SHA:ECDH-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384:ECDH-RSA-AES256-SHA384:ECDH-ECDSA-AES256-SHA384:ECDH-RSA-AES256-SHA:ECDH-ECDSA-AES256-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:CAMELLIA256-SHA:PSK-AES256-CBC-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:SRP-DSS-3DES-EDE-CBC-SHA:SRP-RSA-3DES-EDE-CBC-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:DH-RSA-DES-CBC3-SHA:DH-DSS-DES-CBC3-SHA:ECDH-RSA-DES-CBC3-SHA:ECDH-ECDSA-DES-CBC3-SHA:DES-CBC3-SHA:PSK-3DES-EDE-CBC-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:SRP-DSS-AES-128-CBC-SHA:SRP-RSA-AES-128-CBC-SHA:DH-DSS-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:DH-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:DH-RSA-AES128-SHA256:DH-DSS-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:DH-RSA-AES128-SHA:DH-DSS-AES128-SHA:DHE-RSA-SEED-SHA:DHE-DSS-SEED-SHA:DH-RSA-SEED-SHA:DH-DSS-SEED-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-DSS-CAMELLIA128-SHA:DH-RSA-CAMELLIA128-SHA:DH-DSS-CAMELLIA128-SHA:ECDH-RSA-AES128-GCM-SHA256:ECDH-ECDSA-AES128-GCM-SHA256:ECDH-RSA-AES128-SHA256:ECDH-ECDSA-AES128-SHA256:ECDH-RSA-AES128-SHA:ECDH-ECDSA-AES128-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:SEED-SHA:CAMELLIA128-SHA:IDEA-CBC-SHA:PSK-AES128-CBC-SHA:ECDHE-RSA-RC4-SHA:ECDHE-ECDSA-RC4-SHA:ECDH-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:RC4-SHA:RC4-MD5:PSK-RC4-SHA:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DH-RSA-DES-CBC-SHA:DH-DSS-DES-CBC-SHA:DES-CBC-SHA:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DH-RSA-DES-CBC-SHA:EXP-DH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA:EXP-RC2-CBC-MD5:EXP-RC4-MD5 

しかし、私はは/ opt/binに/ opensslのENC -help 2> & 1を実行する場合、私は "-aes-128-CCM" を参照してください。

-aes-128-cbc    -aes-128-ccm    -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-ccm    
-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-ccm    
-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     -gost89     -gost89-cnt    
-id-aes128-CCM    -id-aes128-GCM    -id-aes192-CCM    
-id-aes192-GCM    -id-aes256-CCM    -id-aes256-GCM    
-idea      -idea-cbc     -idea-cfb     
-idea-ecb     -idea-ofb     -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   

ルビ2.0.0p0をrvmと一緒にカンマnd:rvm reinstall 2.0.0 --with-openssl-dir=/opt(上記の論文に記載)。そして、cipher = OpenSSL::Cipher.new('aes-128-ccm')を実行しました。次のエラーが返された:

unsupported cipher algorithm (aes-128-ccm) 

私の質問はどのように私はRubyでAES-128-CCMのサポートを追加することができます/私はここで間違って何をやっているのですか?

まずgithubからOpenSSLのソースを取得::私はここに私がやったことで、それがうまく行った

+2

** OpenSSL :: Cipher.ciphers **の一覧に表示されますか?本当に正しいopensslライブラリにリンクしているかどうかを確認してください。 linuxでは、ldd/path/to/ruby​​はlibcrypt.soリンケージを表示する必要があります –

+0

'requires openssl 'とは何ですか? OpenSSL :: VERSION'はあなたに何を与えますか? –

答えて

2

オーケー

$ git clone https://github.com/openssl/openssl.git 
$ cd openssl/ 

私が使用したとして、あなたはまったく同じバージョンを使用する場合は

、操作を行います。

$ git checkout 5ae8d6bcbaff99423a2608559d738a3fcf7ed6dc -b tmp 

現在、いくつかのディレクトリ内の共有ライブラリとOpenSSLをビルドする:

$ ./config shared --prefix=/home/jbr/local/openssl 
$ make depend 
$ make 
$ make install 

あなたはCCM-サポートを持っていることを確認してください:

$ /home/jbr/local/openssl/bin/openssl enc -help 2>&1 | grep "ccm" 
-aes-128-ccm    -aes-128-cfb    -aes-128-cfb1    
-aes-192-cbc    -aes-192-ccm    -aes-192-cfb    
-aes-256-ccm    -aes-256-cfb    -aes-256-cfb1 

さて、RVMとOpenSSLの新しいバージョンを使用して、名前のルビーをインストール:このコマンドは、あなたのバージョンを提供します

$ rvm install ruby-2.0.0-p195 -n ccm --with-openssl-dir=/home/jbr/local/openssl 

をあなたの新しいOpenSSLライブラリを使用する-ccmが付いたRuby 2.0.0のパッチレベル195。

$ rvm use ruby-2.0.0-p195-ccm 

そして、IRBとそれをテスト:

$ irb 
2.0.0p195 :001 > require 'openssl' 
=> true 
2.0.0p195 :005 > OpenSSL::Cipher.ciphers.include? "aes-128-ccm" 
=> true 

あなたは今、AES-128-CCMを持って

は今のRubyの新しいバージョンがあることを使用します。

関連する問題