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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0808
ww302jp暗号化の方法...15解決


ww302jp

リンク

2006/8/8(Tue) 16:01:04|NO.1871

a="あいうえお"
↑この変数aのデータを暗号化・復元化するにはどうすればいいですか?
一応ヘルプでいろいろ調べてみましたが見つかりませんでした...
よろしくお願いします



この記事に返信する


ゆちボン

リンク

2006/8/8(Tue) 16:18:41|NO.1873

こんにちは。ゆちボンです。
文字コードを調べて、1つ足したりする方法がいいと思います。
低速ですが、、、


sdim MOJI,32000 sdim MOJI2,32000 sdim MOJI3,32000 ;暗号化の文字列 MOJI="あいうえお" ;暗号強度 D=3 ;文字列の長さ nagasa = strlen(MOJI) ;暗号化 repeat nagasa ;文字コードを調べて足してaに代入 a = peek(MOJI,cnt) a = a + D ;そして暗号化したものを書き込む poke MOJI2,cnt,a loop ;複合化 nagasa = strlen(MOJI2) repeat nagasa ;文字コードを調べて引いてaに代入 a = peek(MOJI2,cnt) - D ;そして複合化したものを書き込む poke MOJI3,cnt,a loop mes "暗号化前" mes MOJI mes "暗号化後" mes MOJI2 mes "複合化後" mes MOJI3 stop
少々長いですけど、、、こんな感じです。



ww302jp

リンク

2006/8/8(Tue) 16:32:37|NO.1875

分かりました
やってみます
ですが結果などをまた書くのでそれまでは未解決にしときます



ゆちボン

リンク

2006/8/8(Tue) 16:42:04|NO.1876

>ww302jpさんへ
ちなみに、あのスクリプトは暗号化したあとにすぐにもとの
データに戻しています。
文字列をいじる場合は「MOJI = "あいうえお"」をいじってください。



ww302jp

リンク

2006/8/8(Tue) 16:45:18|NO.1877

結構難しいですね
理解ができません...



ww302jp

リンク

2006/8/8(Tue) 16:51:21|NO.1878

よろしければ
暗号化→保存
読み込み→複合化
のスクリプトを教えていただけないでしょうか?
自分でやってみたら...
オーバーフローしてしまって...
よく分からないのですよ...
でもこれから学んでいきたいとは思います
よろしければ
ですよ...



櫻屋 林檎

リンク

2006/8/8(Tue) 21:16:18|NO.1883

どうも、9時なのでよい子は寝る時間だと思います。櫻屋です。
どうでもいい前置きはさておき、暗号化の解説させていただきたいと思います。
ゆちボンさんがやっていたスクリプトは、文字コードを加減する方法です。
a='a' : mes a
とすると、文字コードを見られると思います。
まぁ、このコードを弄って暗号化させるのがHSPでは一般的だと思います。 そして、暗号化したファイルをめでたく保存すれば、完了です。 また、保存する場合は、noteloadではなく、bsaveをつかって保存してください。 万が一、終了コードになったり、変な文字が含まれると、途中で消される場合もありえます。 また、オーバーフローしたのは、加減の数値が255以上だった為か、 書き込みの対象の変数のメモリを確保しきれていなかった為だと思われます。 これらのことを踏まえ、世の中にはいろいろな暗号化のサンプルがあるので、 それを参照することをオススメします。 私も昔、すこし暗号化をかじったことがあるので応援しています。頑張ってください。 // そんな建前どうでもいいからスクリよこせってところでしょうか('A`



理沙

リンク

2006/8/8(Tue) 21:29:54|NO.1884

暇だったんで、やってみました・・・
てきとぉなんで、バグがあるかもです。

// 暗号化・複合化 // 暗号数値 #const VAL 1 // 文字サイズ #const SIZE 16000 screen 0,640,480 sdim text,SIZE sdim code,SIZE // 暗号化する文字列の為のテキストボックス pos 0,30 mesbox text,640,400,5,SIZE pos 120,440 button gosub "暗号化",*sr_code pos 240,440 button gosub "複合化",*sr_decode pos 360,440 button gosub "保存",*sr_save pos 480,440 button gosub "読込",*sr_load stop // 暗号化ルーチン *sr_code sdim code,SIZE // 文字列の長さを調べる len = strlen( text ) // 文字数の分だけ繰り返す repeat len // textから1byteずつ読み出し、文字コードに暗号数値を加える x = peek( text , cnt ) + VAL // 255より大きいなら255を引く if x > 255 :x -= 255 // code に書き込む poke code , cnt , x loop // textに代入して、テキストボックスに反映 sdim text,SIZE text=code objprm 0,text return // 複合化ルーチン *sr_decode sdim code,SIZE // 文字列の長さを調べる len = strlen( text ) // 文字数の分だけ繰り返す repeat len // textから1byteずつ読み出し、文字コードに暗号数値を加える x = peek( text , cnt ) - VAL // 0未満なら255を足す if x < 0 :x += 255 // code に書き込む poke code , cnt , x loop // textに代入して、テキストボックスに反映 sdim text,SIZE text=code objprm 0,text return // 保存 *sr_save a = strlen( text ) bsave "text.txt",text,a dialog "text.txt に保存しました" return // 読込 *sr_load sdim text,SIZE bload "text.txt",text objprm 0,text return // EOF



Luna

リンク

2006/8/8(Tue) 21:42:18|NO.1885

>一応ヘルプでいろいろ調べてみましたが見つかりませんでした...
「HSP 暗号化」で調べれば(ググれば)いくらでも出てくると思うのですが。

>暗号化→保存
>読み込み→複合化
>のスクリプトを教えていただけないでしょうか?
ゆちボンさんのスクリプトにbsaveやbloadをつけるだけだと思いますが。
それくらいは、調べて考えましょうよ。


それで、暗号化というのは、元の文字を分からなくすることです。
「a」や「s」という文字には、「97」や「115」とかいう
内部では「文字コード」というものであらわされています。
たとえば、

MOJI = "abcde" mes MOJI repeat strlen(MOJI) a = peek(MOJI,cnt) //読み込む a++ //aを1増やす poke MOJI, cnt, a //書き込む loop mes MOJI
簡単な暗号化でこんなのがあります。
a++で文字コードがインクリメントされるので、
「a」は「b」になり「d」は「e」になります。



Luna

リンク

2006/8/8(Tue) 21:48:56|NO.1886

追記?

>櫻屋さん
>a='a' : mes a
これは
mes 'a'
でも出力できますよ。



ww302jp

リンク

2006/8/9(Wed) 10:17:41|NO.1896

ありがとうございました!
なんとかできそうです!
ではww



ゆちボン

リンク

2006/8/9(Wed) 13:42:42|NO.1900

あ、言い忘れていました。
あのスクリプトに半角大文字だけの文字列を与えてずらす量(変数D)を
32にすると全部小文字になってしまうので気をつけてください。



あげなす

リンク

2006/8/11(Fri) 17:23:09|NO.1959

でもここで出てきた暗号化方式に手を加えないと、暗号化の意味が
なくなるんではないかと…
このスレを見てる人はたくさんいると思うので…
なんか、単純に足したり引いたりするだけじゃなくて、もっと複雑なのを…
普通暗号化するときはパスワードの文字コードを順番に抜き出して、それを
暗号化する値にするのですが、って分かりにくいですね。

例えば"ABCD"というパスワードがあるとします。
このパスワードを使って"AGENASU"という文字列を暗号化したいとき、


A B C D A B C ←パスワード | | | | | | | A G E N A S U ←文字列
このようにそれぞれを対応させます。
つまり、

"AGENASU"の"A"の文字は、パスワードの"A"という文字コードで、 "AGENASU"の"G"の文字は、パスワードの"B"という文字コードで、 "AGENASU"の"E"の文字は、パスワードの"C"という文字コードで、 "AGENASU"の"N"の文字は、パスワードの"D"という文字コードで、 "AGENASU"の"A"の文字は、パスワードの"A"という文字コードで、 ....それぞれ暗号化していく
と言う風にしていけば、単純な256通りのキーだけでなく、
256の[パスワードの文字数]乗 通りのキーができます。
いろいろと試してみることをお勧めします。



M

リンク

2006/8/11(Fri) 22:11:17|NO.1965

サイトグラムで拾ったスクリプト

#module
#define global PublicKey 1234
#deffunc Xine var p1, int p2
randomize (PublicKey+strlen(p1)+p2)
repeat strlen(p1)
p = peek(p1,cnt)
p = (p^rnd(255))&255 : if ((cnt\2) == 0) {p = (p^2)&255}
poke p1,cnt,p
loop
return
#global

buf = "あいうえお"
mes buf
Xine buf,332
mes buf
Xine buf,332
mes buf



グレイゾーン

リンク

2006/8/11(Fri) 22:38:52|NO.1966

>ではww
もういいんじゃないんですかね?あとは勝手に工夫するでしょ?wwwwwwwwwwwwwwwwwwwwあとMさん掲示板の使い方読んで。



GENKI

リンク

2006/8/12(Sat) 00:44:42|NO.1968

ファイルの暗号化昔やったなぁ…。
http://homepage3.nifty.com/ghpk/dl/dl02.htm
↑スクリプト付なので参考にどうぞ。



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