Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://kovayashi.blog120.fc2.com/tb.php/91-f675eacd

-件のトラックバック

-件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

【blowfish】サーバー(ruby)で暗号化しクライアント(javascript)で復号化

下りの暗号化で示したシーケンスを実現するまえに、共通鍵で暗号したデータの受け渡しの基礎検証をする。
サーバー(ruby)で暗号化しクライアント(javascript)で復号化する事になるので、まずは、rubyのOpenSSL::Cipherで暗号化したデータを復号化できるjavascriptライブラリ探した。
いくらでもあると思ってたRC-5のライブラリは見つからなかったので変わりにDESAESをいくつも探しては、試したがrubyのOpenSSL::Cipherで暗号化したデータを復号化できるjavascriptライブラリはみつからなかった。

そこでruby側での暗号化をOpenSSL::Cipherの使用をあきらめて、rubyのライブラリも探す事にする。

試行錯誤の結果、Blowfishでようやく噛合う組み合わせを見つけた。

crypt-1.1.4: http://crypt.rubyforge.org/blowfish.html
dojo: http://www.dojotoolkit.org

rubyのcryptにはencrypt_stringというメソッドがあるが、これを素直に使ったのでは、dojoでdectyptできなかったので、dojoのencryptの方式をruby側で倣ったところ、ようやく合致した。


#!/usr/local/bin/ruby
require 'cgi'
require 'erb'
require 'rubygems'
require 'crypt/blowfish'

cgi=CGI.new('html3')
if ENV['REQUEST_METHOD'].upcase == 'POST' then
key='0123'
str='piyopiyo'

bf=Crypt::Blowfish.new(key)
n=8-(str.length&7);
n.times do
str<<n.chr
end
en=''
(str.length>>3).times do |i|
p=i*8
en<<bf.encrypt_block(str[p,p+8])
end
cgi.out(){
[en].pack('m').gsub("\n", '')
}
else
cgi.out(){
cgi.html(){
cgi.body(){
ERB.new(DATA.read).result(binding)
}
}
}
end
__END__
<script type='text/javascript' src='dojo-release-1.4.0/dojo/dojo.js'></script>
<script type='text/javascript' src='prototype.js'></script>
<script type='text/javascript'>
dojo.require('dojox.encoding.crypto.Blowfish');
function push(){
new Ajax.Request('<%= ENV['SCRIPT_NAME'] %>',{
method: 'post',
onComplete: function(http){
var key = window.prompt('password', '');
var enc = http.responseText;
var dec = dojox.encoding.crypto.Blowfish.decrypt(enc, key);
alert(dec);
}
});
}
</script>
<input type='button' value='PUSH' onClick='push()'>


なお、上記仕様では全角文字の暗号化には対応できていない。
もう一工夫する必要がる。(たとえばbase64でエンコードする。dojoのbase64ライブラリは、日本語に対応してないようなので、こちらとかで)
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://kovayashi.blog120.fc2.com/tb.php/91-f675eacd

0件のトラックバック

0件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

Appendix

プロフィール

kovayashi

Author:kovayashi
・嫌いなもの
 →好きなもの

・インストール
 →バンドル
・バックアップ
 →アップロード
・努力
 →チート

最近のトラックバック

ブログ内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。