文章の暗号化・復号化 15

プログラミングを用いた私のアートワークのコンセプトは、情報をいくつからの角度から見直す作業です。まず視覚データから音楽を作り出すこと、次に視覚、聴覚、言語・音声の暗号化と復号化です。私は人が外界を感知する方法と暗号を解読する方法に、 何か共通なものがあると考えています。 そのスタディを兼ねて2008年に「暗号ノート」という自分用のアプリを作って一般向けに配布もしていましたが、OSの変化に着いて行けなくなって、作り直すことにしました。

今回は複雑な機能は全て外した、非常にシンプルな文書の暗号・復号だけのアプリです(ビデオを見てください)。コードは全て公開します。トータルで80行ほどの小さなプログラムです。ここで使っている使っている「ブローフィッシュ 128ビット」は、暗号・情報セキュリティの研究家ブルース・シュナイアーが開発したアルゴリズムです。私の知っている限り、解読する方法はまだありません。現在の暗号アルゴリズムは、同じ平文で同じパスワードを使っても、毎回違う暗号文を作り出します。暗号アプリのソースをオープンにすると言うことは、中身を見たくらいでは破れない強力なアルゴリズムを使っていると言う意味でもあります。ブローフィッシュはパブリック・ドメインで公開されています。

パスワードを忘れたり、使用してトラブルがあった場合、
作者小島健治は一切責任を取りません。

ここに全てのコードを載せますから興味ある人は自分で作ってください。
mac版、win版共に同じスクリプトのスタックからアプリにビルドできます。
mac版ビルドしたアプリケーション(フリー)のダウンロード V.1.1: AngoNote2022_V.1.1_mac.zip
アップル・ストアからのダウンロードでないので、 初めに開く時はアプリ・アイコンを右クリックして 出てくるメニューから「Open」を選んでください。

Version 1.0


バージョン 1.1 ウインドウ&テキスト・フィールドを縦に伸ばせます
フィールド・サイズの調整は 「LiveCode6 初心者開発入門」 にあります。


ドラッグ&ドロップでテキスト・フィールドに

「01. ドラッグ&ドロップ」の応用で平文のテキスト・ファイルが左のフィールドに、暗号化したファイルは右のフィールドに入るように、カードスクリプトに書き込みます。

以下カードに書き込む
on dragEnter
   set the acceptDrop to true
end dragEnter

on dragDrop
   put dragData["files"] into tPath
   put base64decode(url("binfile:/" & tPath)) into tData
   if the target is "field " & quote & "heibunText" & quote and \
   	char 1 to 7 of tData is not "Salted_" then
      put textdecode(url ("binfile:/" & tPath), "utf-8") into fld "heibunText"
   else
      if the target is "field " & quote & "angoText" & quote and \
      	char 1 to 7 of tData is "Salted_" then
        	 put tData into fld "angoText"
         exit to top
      end if
   else
      beep
      exit to top
   end if
end dragDrop

on closeCard
   -- btn "putEmpty"は ボタン「すべて空白」
   send mouseUp to btn "putEmpty"
end closeCard

-- 検索のためのコマンド
on findTtext
   put the text of fld "tFind" into tString
   find string tString in fld "heibunText"
   if the result is "not found" then
      beep
      set the hilitedLine of fld "heibunText" to 0
   end if
end findTtext


ボタン「暗号文に変換」
on mouseUp
   if the num of chars of fld "openPass" < 8 then
      beep
      answer "パスワードは8文字以上です"
      exit to top
   else
      put fld "openPass" into tKey
   end if
   
   put base64Encode(the unicodeText of fld "heibunText") into tData
   encrypt tData using "blowfish" with tkey at "128" bit
 
   if the result is not empty then 
      beep
      answer "トラブルが発生しました。暗号化できません。"
      put false into gAnotherPass
      exit to top
   else
      put it into fld "angoText"
   end if
end mouseUp


ボタン「暗号文を平文に」
 on mouseUp
   if the num of chars of fld "openPass" < 8 then
      beep
      answer "パスワードは8文字以上です"
      exit to top
   else
      put fld "openPass" into tKey
   end if
   put fld "angoText" into tAngobun
   decrypt tAngobun using "blowfish" with tkey at "128" bit
   
   if the result is not empty then 
      beep
      answer "トラブルが発生しました。暗号化できません。"
      put false into gAnotherPass
      exit to top
   else
      put unidecode(base64Decode(it)) into fld "heibunText"
   end if
end mouseUp


ボタン「Save 暗号」
on mouseUp
   ask file "Save 暗号File:" with "ango.txt" 
   if it is not "" then
      put base64Encode(fld "angoText") into url("binfile:" & it)
   end if
end mouseUp


ボタン「すべて空白」
on mouseUp
   put "" into fld "heibunText"
   put "" into fld "angoText"
   put "" into fld "openPass"
   put "" into fld "tFind"
end mouseUp


フィールド「tFind」
on returnInField
  findTtext
end returnInField

on enterInField
  returnInField
end enterInField




14. ミュージック・ファイルを画像に

16. 音楽ファイルでドローイングを描く




アーチスト:小島健治 / Artist: Kenji Kojima

アーチスト:小島健治
kenjikojima.com


クリエイティブ・コモンズ
Attribution-NonCommercial-NoDerivatives

Click and Go to PayPal

日本からのドネーションは こちらをクリック

LiveCode 6 初心者開発入門