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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0920
黒色数字を暗号化できませんか?6解決


黒色

リンク

2010/9/20(Mon) 19:14:13|NO.35066

こんにちは。
数字を暗号化して保存する事に関して質問です。
セーブデータを勝手に変えられないように、下のようなスクリプトで暗号化して保存しようとしています。

#module #deffunc enc var p1, int key, int size repeat size poke p1, cnt, peek(p1, cnt)+(key*key^cnt) loop return #deffunc dec var p1, int key, int size repeat size poke p1, cnt, peek(p1, cnt)-(key*key^cnt) loop return #global kotoba="あいうえお" enc kotoba,25,8 bsave "test.txt",kotoba dec kotoba,25,8
これなら正常に暗号化されて保存され、しっかり復号化もされるのですが、「kotoba」を
kotoba=123

と文字列ではなく数字にすると、どうしてもエラーが出てしまいます。 数字も暗号化して保存するにはどうすれば良いのでしょうか? どなたか教えてください。お願いします!



この記事に返信する


gagreag

リンク

2010/9/20(Mon) 19:23:42|NO.35067

どこが数字なんだ?それは数値だ。
数値と数字は違うぞ。

どう違うのかは勉強しろ。



黒色

リンク

2010/9/20(Mon) 19:34:17|NO.35068

すいません、打ち間違いです。
gagreagさんのおっしゃる通り、「数字」ではなく「数値」です。



panda

リンク

2010/9/20(Mon) 20:17:23|NO.35069

ちょっと無理やりですが、 kotoba=str(123) のように str()で変換する方法もあります。

また、intのサイズを指定してやるとうごきますよ。


#module #deffunc enc var p1, int key, int size repeat size poke p1, cnt, peek(p1, cnt)+(key*key^cnt) loop return #deffunc dec var p1, int key, int size repeat size poke p1, cnt, peek(p1, cnt)-(key*key^cnt) loop return #global kotoba=123 enc kotoba,25,4 ; int は4バイト(Win32では) mes "暗号化:" + kotoba dec kotoba,25,4 mes "復号化:" + kotoba

C言語で言う sizeof() で指定すると確実ですが、HSPではほとんどの環境で4バイトでしょう・・・。(根拠なし)



KA

リンク

2010/9/20(Mon) 20:59:43|NO.35070

端折ってるのかな? ぱっと見、重大な欠点が有りますが・・・。
それはおいといて sdim を使う方法も有ります。


〜省略〜 #global sdim kotoba,100 A="あいうえお" ; 又は A=123 kotoba=""+A enc kotoba,25,8 mes "暗号化:" + kotoba dec kotoba,25,8 mes "復号化:" + kotoba



KA

リンク

2010/9/20(Mon) 21:11:03|NO.35071

”数値”だったか、見落とした・・・・

sdim で確保したバッファは、文字列専用では有りません。
文字列として扱う場合は、終端を null とみなします。
バイナリとして扱う場合は、バイト数を自己管理する必要が有ります。

後は考えてください、そんなに難しくは無いと思います。



黒色

リンク

2010/9/22(Wed) 19:02:59|NO.35105

なんとか解決しました、ありがとうございます!



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