JavaScriptで RSA 公開鍵による暗号化、復号化が出来るライブラリ「cryptico.js」


20110830-03

RSA鍵の生成と公開鍵による暗号化、復号化が出来るJavaScript「cryptico.js」をご紹介。

IT/WEB業界への転職なら求人サイトGreen

RSA鍵の作り方

var PassPhrase = "The Moon is a Harsh Mistress."; 
var Bits = 1024; 
var MattsRSAkey = cryptico.generateRSAKey(PassPhrase, Bits);

公開鍵の作り方

var MattsPublicKeyString = cryptico.publicKeyString(MattsRSAkey);       

すると、以下のような文字列が生成されます。

uXjrkGqe5WuS7zsTg6Z9DuS8cXLFz38ue+xrFzxrcQJCXtVccCoUFP2qH/AQ
4qMvxxvqkSYBpRm1R5a4/NdQ5ei8sE8gfZEq7dlcR+gOSv3nnS4/CX1n5Z5m
8bvFPF0lSZnYQ23xlyjXTaNacmV0IuZbqWd4j9LfdAKq5dvDaoE=

メッセージの暗号化

メッセージを暗号化してみます。

var PlainText = "Matt, I need you to help me with my Starcraft strategy.";
var EncryptionResult = cryptico.encrypt(PlainText, MattsPublicKeyString);

すると、以下のような暗号化された文字列が取得できます。

OOHoAlfm6Viyl7afkUVRoYQv24AfdLnxaay5GjcqpxvEK+dph5kUFZEZIFKo
vVoHoZbtUMekSbMqHQr3wNNpvcNWr4E3DgNLfMZQA1pCAUVmPjNM1ZQmrkKY
HPKvkhmVKaBiYAJGoO/YiFfKnaylLpKOYJZctkZc4wflZcEEqqg=?cJPt71I
HcU5c2LgqGXQKcx2BaAbm25Q2Ku94c933LX5MObL9qbTJEVEv29U0C3gIqcd
qwMV6nl33GtHjyRdHx5fZcon21glUKIbE9P71NwQ=

メッセージを復号化

では、暗号化されたメッセージを復号化してみましょう。

var CipherText = "OOHoAlfm6Viyl7afkUVRoYQv24AfdLnxaay5GjcqpxvEK+dph5kUFZEZIFKo \
                  vVoHoZbtUMekSbMqHQr3wNNpvcNWr4E3DgNLfMZQA1pCAUVmPjNM1ZQmrkKY \
                  HPKvkhmVKaBiYAJGoO/YiFfKnaylLpKOYJZctkZc4wflZcEEqqg=?cJPt71I \
                  HcU5c2LgqGXQKcx2BaAbm25Q2Ku94c933LX5MObL9qbTJEVEv29U0C3gIqcd \
                  qwMV6nl33GtHjyRdHx5fZcon21glUKIbE9P71NwQ=";

var DecryptionResult = cryptico.decrypt(CipherText, MattsRSAkey);

これでメッセージが復号化されました。

署名による暗号化

var PassPhrase = "There Ain't No Such Thing As A Free Lunch."; 
var SamsRSAkey = cryptico.generateRSAKey(PassPhrase, 1024);

var PlainText = "Matt, I need you to help me with my Starcraft strategy.";

var EncryptionResult = cryptico.encrypt(PlainText, MattsPublicKeyString, SamsRSAkey);

公開鍵と秘密鍵の役割は通常の場合においては、公開鍵は暗号化に使われ、秘密鍵は復号に用いられますが、RSA暗号においては平文と暗号文の定義域が同じ(平文空間=暗号文空間である)ため、任意の文書(メッセージ)を暗号文とみなして復号することができるようになります。

クライアントサイドでのセキュリティ対策に使えそうですね。
詳細&ダウンロードは下のリンクからどうぞ。

 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

follow us in feedly