Entries

スポンサーサイト

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

-件のトラックバック

-件のコメント

コメントの投稿

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

ajax+rubyでRSA

Ajax.Requestで投げるpostBodyを暗号化してみる。

基本的に、こちらのページを参考に、<form>で送ってるものをAjax.Requestに改造しただけ。


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

KEY_FILE = "private_key.pem"

rsa = OpenSSL::PKey::RSA.new(File.read(KEY_FILE))

cgi = CGI.new()
cgi.out(){
if cgi.has_key?("password") then
rsa.private_decrypt(Base64.decode64(cgi["password"]))
else
ERB.new(DATA.read).result
end
}
__END__
<html>
<head>
<script src="prototype.js" type="text/javascript"></script>
<script src="base64.js" type="text/javascript"></script>
<script src="jsbn.js" type="text/javascript"></script>
<script src="prng4.js" type="text/javascript"></script>
<script src="rng.js" type="text/javascript"></script>
<script src="rsa.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
rsa = new JSBN.RSA.RSAKey();
rsa.setPublic("<%= "%x" % rsa.n %>", JSBN.RSA.byte2Hex(<%= rsa.e %>));

function encrypt(){
var password = hex2b64(rsa.encrypt($("password").value));

new Ajax.Request("<%= ENV['SCRIPT_NAME'] %>",{
method: "post",
postBody: 'password='+encodeURIComponent(password),
onSuccess: function(http){
alert(http.responseText);
}
});
}
</script>
Password : <input type="password" id="password"></input>
<input type="button" value="send" onClick="encrypt()"></input>
</body>
</html>


クライアント側で暗号作成に用いるjsbn.js、prng4.js、rng.js、rsa.jsは、aSSL
『aSSL 1.2.1 beta3 for PHP (complete) 』などの中に入ってるものを利用します。
base64.jsはこちらから頂きました

あと、private_key.pemの中身は、opensslコマンドで作ります。くわしくはこちらなどで。


以下、後日記
下りの暗号化
続・下りの暗号化(ajax+rubyでRSA)

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

0件のトラックバック

0件のコメント

コメントの投稿

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

Appendix

プロフィール

kovayashi

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

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

最近のトラックバック

ブログ内検索

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