<?lc put header "Content-Type: text/html; charset=utf-8" ?> <!-- Author: Kenji Kojima, index@kenjikojima.com You can make variations of Cipher Project freely. Your server has to be installed LiveCode Community Server (free). http://downloads.livecode.com/livecode/ コードを参照して「暗号計画 / Cipher Project」のバリエーションを作るのは自由です。 LiveCodeを使ってサーバーサイドのプログラミングをしています。 サーバーは無料の LiveCode Community Server をインストールする必要があります。 http://downloads.livecode.com/livecode/ インストールに関しての日本語情報「ラズベリーパイにLiveCodeサーバー・エンジンをインストール」 http://kenjikojima.com/livecode/RPi/liveCodeServer.html LiveCodeのGitHubページ: https://github.com/livecode --> <html> <head> <title>「暗号計画 / CipherText Project」平文をEメールで送れる暗号に変換・復号</title> <link href="../basic_iRev/css/simpleirev.css" rel="stylesheet" type="text/css" media="all"/> </head> <!-- ソースを見せるスクリプトをインポート --> <?lc include "script.lc" ?> <body> <div class="body" id="container2"> <!-- Donation --> <a href="http://kenjikojima.com/donation.html" target="_blank"><img alt="" border="0" src="http://kenjikojima.com/donation/donateBW.png"><font color="#999999" size="1"><i>小島健治のデジタルアートサポートをよろしく</i> </font></a> <br> <!-- END Donation --> <h1>暗号計画 / CipherText Project <span class="body">   <a href='http://www.kenjikojima.com/ango/'>English/英語</a> / <a href="jp.lc?file=jp.lc">ソースを公開しています</a> / <a href='http://kenjikojima.com/ango/encryptImage.lc'>暗号・復号画像</a></span></h1> <!-- LiveCodeをインストールしたサーバーを使用しています --> メールで送れる暗号を普通の文章から作ります。暗号アルゴリズムは強力な「<a href="https://ja.wikipedia.org/wiki/Blowfish" target="_blank">blowfish 128ビット</a>」です。変換した暗号は、全文をEメールにコピペして送ってください。受け取ったEメールは、暗号文だけ U2Fsd から最後の文字までを、このページの本文枠内にコピペして、パスワードをタイプして、「暗号/復号」ボタンをクリックすれば平文に戻ります。小島健治の「<a href='http://kenjikojima.com/indexList.lc?splitMerge=true'>Cipher Art Project</a>」の延長作品です。<font color="#588">著者は結果の責任を一切取りません。</font> <p> <?lc --// LiveCode プログラミング スタート //-- function createForm pData --// テキストフォームを書き出すファンクション //-- return "<form action='jp.lc' method='POST' name='collect' >本文(平文)または このページで作成した暗号を枠内に入れてください。<br><textarea name='writeText' rows='10' cols='90' placeholder='平文または暗号をここにコピペ 暗号は U2Fsd から始まります' />" & pData & "</textarea><br>パスワード: <input name='name' type='name' autocomplete='off'/>     <input type='submit' name='submit' value='暗号/復号'> パスワードは6文字以上、日本語でもOKです。</form> <p><hr>" end createForm put $_POST["name"} into tPassword --// パスワードの値を収納 //-- put $_POST["writeText"} into tData --// 平文または暗号を収納 //-- --// ページを初めて開ける //-- if tData is empty and tPassword is empty then put createForm(tData) --// アクシデントでパスワードだけ送ってしまった場合 //-- if tData is empty and tPassword <> empty then put createForm(tData) --// パスワードが6文字以下の場合 //-- if tData <> empty and the num of chars of tPassword < 6 then put createForm(tData) put "<h2>パスワードは6文字以上に設定してください。</h2><br><br>" & "<a href='http://www.kenjikojima.com/ango/jp.lc'>ページをリフレッシュ</a>     " & "<a href='mailto:index@kenjikojima.com?subject=暗号計画'>作者の小島健治にメール</a>     <a href='http://www.kenjikojima.com'>http://www.kenjikojima.com</a>" exit to top end if --// 平文を暗号にする //-- if tData <> empty and char 1 to 5 of tData <> "U2Fsd" then --// オリジナルデータをフォームに表示 //-- put createForm(tData) --// 平文をブローフィッシュで暗号に変換 値は it で受け取る //-- encrypt tData using blowfish with tPassword at 128 bit --// 暗号化したデータを送信処理に適したベース64に変換 //-- put base64Encode(it) into tBase64Ango if the result <> empty then --// the result にブローフィッシュのエラーが書き出される //-- put the result &"<br>" & "<h2>何らかのトラブルで暗号化できません。</h2><br><br>" else --// 暗号ID は沢山のパスワードを作った場合の混乱を避けるための IDです //-- --// 暗号ID をticks(1/60秒)から作り読みやすいように 16進数に変換 //-- put baseConvert(ticks(), 10,16) into tCipherID --// テキストフィールドの枠内に書き出す文すべて「暗号ID, URL, 暗号文」を一旦 tAngoMail に収納させる //-- put "暗号ID:" && tCipherID &cr& "暗号文は4行目の「U2Fsd ...」から始まり最後の文字までです。" &cr& "http://www.kenjikojima.com/ango/jp.lc をブラウザーで開いて暗号文だけをテキストの枠内にコピペします。" &cr&cr& tBase64Ango into tAngoMail --// テキストフィールドの枠の上に書き出す //-- put "暗号:枠内の全てをメール本文にコピペしてください。<span class='bodyS'>(同じ平文とパスワードでも、作られる暗号は毎回違います)</span><br>" --// テキストフィールドの枠内に tAngoMailを書き出す //-- put "<textarea onclick='this.select();' rows='10' cols='90' readonly>" & tAngoMail & "</textarea><br>" --// テキストフィールドの枠の下に書き出すパスワード、暗号ID、その他 //-- put "パスワード:" & tPassword & "   /   暗号ID: " & tCipherID & "   /   パスワードと暗号IDは直接渡すか別便で送ります。<br><hr><br>" end if put "<a href='http://www.kenjikojima.com/ango/jp.lc'>ページをリフレッシュ</a>     " else --// 暗号を平文にする //-- if tData <> empty and char 1 to 5 of tData is "U2Fsd" then --// オリジナルデータ(暗号)をフォームに表示 //-- put createForm(tData) --// ベース64で書き出した暗号を元の暗号文に変換(デコード) //-- put base64Decode(tData) into tAngo64Decode --// 暗号を平文に変換 値は it に入る //-- decrypt tAngo64Decode using blowfish with tPassword at 128 bit if the result <> empty then --// the result にブローフィッシュのエラーが書き出される //-- put the result &"<br>" & "<h2>パスワードが違っているか、何らかのトラブルで復号できません。</h2><br><br>" else put "復号:<br>" --// 復号した平文をフィールド内に書き出す //-- put "<textarea onclick='this.select();' rows='10' cols='90' readonly>" & it & " </textarea><br><hr>" end if put "<br><a href='http://www.kenjikojima.com/ango/jp.lc'>ページをリフレッシュ</a>     " end if end if ?> <!-- LiveCode プログラミング終了 --> <a href="mailto:index@kenjikojima.com?subject=暗号計画 / Cipher Project">作者の小島健治にメール</a>     <a href='http://www.kenjikojima.com/'>オンラインエキジビション http://www.kenjikojima.com</a> </div> </body> </html>