Entries

スポンサーサイト

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

-件のトラックバック

-件のコメント

コメントの投稿

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

続・下りの暗号化(ajax+rubyでRSA)

「ajax+rubyでRSA」の下り版。
ブラウザ側で公開鍵を発行する仕様です。

#!/usr/local/bin/ruby
require "openssl"
require 'cgi'
require "erb"

cgi=CGI.new('html3')

if cgi.has_key?('n') then
val='hoge'

rsa=OpenSSL::PKey::RSA.new()
rsa.n = cgi['n'].to_i
rsa.e = cgi['e'].to_i
cgi.out('status'=>'OK'){
[rsa.public_encrypt(val)].pack('m')
}
else
cgi.out('status'=>'OK'){
ERB.new(DATA.read).result(binding)
}
end
__END__
<html>
<head>
<script type="text/javascript" src="jsbn.js">
<script type="text/javascript" src="jsbn2.js">
<script type="text/javascript" src="prng4.js">
<script type="text/javascript" src="rng.js">
<script type="text/javascript" src="rsa.js">
<script type="text/javascript" src="rsa2.js">
<script type="text/javascript" src="base64.js">
<script type="text/javascript" src="prototype.js">
<script type="text/javascript">
var rsa = new JSBN.RSA.RSAKey();
var size = 128;
var exponent = '10001'; //1,3,11,10001 16進で指定する。

rsa.generate(size,exponent);

function push(){
new Ajax.Request('<%= ENV['SCRIPT_NAME'] %>',{
method: "post",
postBody: 'n='+rsa.n+'&e='+rsa.e,
onComplete: function(http){
alert(rsa.decrypt(b64tohex(http.responseText)));
}
});
}
</script>
</head>
<body>
<input type="button" value="PUSH" onClick="push()"></input>
</body>
</html>

下り版では使わなかったjsbn2.jsとrsa2.jsを付け加える。
ファイルはaSSLの『aSSL 1.2.1 beta3 for PHP (complete) 』などの中に入ってるものを利用します。

また、こちらから頂いてきたbase64.jsは、そのままでは動かないので、
int2chaをJSBN.int2charに置換します。


鍵のサイズを512にすると、かなり遅い。128ならまぁ使えるかな。

この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://kovayashi.blog120.fc2.com/tb.php/90-4ffebaf8

0件のトラックバック

0件のコメント

コメントの投稿

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

Appendix

プロフィール

kovayashi

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

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

最近のトラックバック

ブログ内検索

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