<?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/index.lc'>English/英語</a> / <a href="jp.lc?file=jp.lc">ソースを公開しています</a> / <a href='http://kenjikojima.com/ango/encryptImage.lc'>暗号・復号画像</a></span></h1>
<!-- LiveCodeをインストールしたサーバーを使用しています -->
<b>現在トラブルで暗号機能が働いていません</b><br>
メールで送れる暗号を普通の文章から作ります。暗号アルゴリズムは強力な「<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>