HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0826
 初心者です文字の暗号化ソフトを作りたいのですが…6未解決


 初心者です

リンク

2011/8/26(Fri) 13:00:45|NO.40873

題名の通り暗号化ソフトを作りたいのですが作り方を教えてください。
『あいうえお』だと『あ』は『ん』『い』は『を』など文字を置き換える方法で作りたいです。



この記事に返信する


info

リンク

2011/8/26(Fri) 13:51:12|NO.40874

poke 系の命令を使用すれば変数内の指定の位置を書き変えることが出来ます。

poke は 1byte
wpoke は 2byte
lpoke は 3byte

をそれぞれ書き換えます。


#const code_ん 0xf182 txt = "いあうえお" wpoke txt,2,code_ん mes txt



通りすがり

リンク

2011/8/26(Fri) 15:06:37|NO.40875

lpokeは4Byte書き込む命令では?



who

リンク

2011/8/26(Fri) 15:52:50|NO.40876

4byteですね。



who

リンク

2011/8/26(Fri) 16:06:30|NO.40877

作るプログラムの設定が曖昧すぎてこんなのしかできない。


Bf="あいうえおさかなくいたい"//あんごうかするもじ //いろいろする A="あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん"//もとにするもの hs=strlen(A)/2 sz=strlen(Bf)/2 sdim Af,sz*2+1 repeat sz:i=cnt m=wpeek(Bf,2*i) repeat hs if m=wpeek(A,2*cnt){ wpoke Af,2*i,wpeek(A,2*(hs-cnt-1)) continue } loop loop mes Af



木村

リンク

2011/8/27(Sat) 01:34:44|NO.40888

 置き換え方式の暗号となるとカエサル方式がメジャーでしょうか。しかし、踊る人形に代表されるようにあの暗号は結構脆い……
 EやTHEが馬鹿に多い英語は論外ですが、日本語も『てにをは』に代表される助詞や『する』などの使用頻度の偏りが大きいので、頑張れば解読も容易でしょう。
 一応、参考までにカエサル方式とヴィジュネル方式の暗号化のスクリプトを置いておきます。参考となれば幸いです。
 以下は一例

m = "Koreハ平文デス♪   Koreハ平文デス♪ ひゃっはー" mes "平文 = 『"+m+"』\n" mes "カエサル暗号の場合" c = encrypt_caesar(m,3) mes "暗号化文章(Caesar) = 『"+c+"』" cc = decrypt_caesar(c,3) mes "復号化文章(Caesar) = 『"+cc+"』" mes "※各単語に1対1で単語が対応する" mes "(お陰で踊る人形はホームズにアッサリ読破された)\n" mes "ヴィジュネル暗号の場合" c = encrypt_vigenere(m,"Encrypt") mes "暗号化文章(Vegenere) = 『"+c+"』" cc = decrypt_vigenere(c,"Encrypt") mes "復号化文章(Vegenere) = 『"+cc+"』" mes "※カエサル暗号と違い、同一単語でも同じ単語にならない" mes "でも数バイト程度の鍵なのでギガ級CPUの前には風の前の塵\n" #module #defcfunc encrypt_caesar str m, int key, local d, local c d = m sdim c, strlen(d)+4 repeat strlen(d) poke c, cnt, (peek(d,cnt)+key)\256 loop return c #defcfunc decrypt_caesar str c, int key return encrypt_caesar(c,-key) #defcfunc encrypt_vigenere str m, str key, local d, local c \ , local k, local now_key d = m k = key sdim c, strlen(d)+4 repeat strlen(d) now_key = peek(k,cnt\strlen(k)) poke c, cnt, (peek(d,cnt)+now_key)\256 loop return c #defcfunc decrypt_vigenere str c, str key, local d, local cc \ , local k, local now_key d = c k = key sdim cc, strlen(d)+4 repeat strlen(d) now_key = peek(k,cnt\strlen(k)) poke cc, cnt, (peek(d,cnt)-now_key)\256 loop return cc #global



KA

リンク

2011/8/27(Sat) 14:32:12|NO.40893

スクリプトは載せませんが、質問の様な暗号化は暗号テーブルを使います。

1:あいうえお順の配列変数1を用意します。
2:それを入れ替えた配列変数2を用意します。
3:文字を配列1から探して、同じ位置の配列2を選択します。
4:この方法では暗号化と復元用に別々のテーブルが必要です。

同じ処理を繰り返したら元に戻る様な暗号化は、大昔に流行った画像処理
マスクの手法を参考にしても良いと思います。

http://homepage3.nifty.com/furumizo/index.htm



ONION software Copyright 1997-2023(c) All rights reserved.