保存の際簡易暗号化をかけたい

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
雷電

保存の際簡易暗号化をかけたい

#1 投稿記事 by 雷電 »

前回トピックを立てました(取得した文字列をINIファイルに保存したい)の続きです。
考えてみたらINIはテキストなので簡単にパスワードが見られてしまいます。
なので簡単な暗号化をかけたいと考えていました。
でコードを書くとなったらまったく分からないため過去ログを見てみました。
・・・見てもても分かりません。

どなたかご教授願えないでしょうか?
卓漏
記事: 32
登録日時: 2005年11月30日(水) 06:38
お住まい: 静岡県の田舎町

#2 投稿記事 by 卓漏 »

前に、同じような質問があったので、そこのURLを落としておきます。
http://www.activebasic.com/forum/viewtopic.php?t=1213
雷電

#3 投稿記事 by 雷電 »

早速の返信ありがとうございました。
同じような質問でしたが、まだ素人の私には分かりにくいです。。。
なので、もう少し分かりやすくしていただけないでしょうか?
卓漏
記事: 32
登録日時: 2005年11月30日(水) 06:38
お住まい: 静岡県の田舎町

#4 投稿記事 by 卓漏 »

>もう少し分かりやすくしていただけないでしょうか?
↑文学系が苦手な自分には、そっちの方が難しいです。orz

一応、簡単そうだった「ケースケ」さんのプログラムを少し改変してみました。

ただ、この暗号方法は、文字コードに沿って文字を一定数だけずらしたの暗号なので、わかる人にはわかってしまうのが欠点です。
雷電

#5 投稿記事 by 雷電 »

暗号化のコードをつかわさせていただきましたが、最終的に文字列は暗号化されていませんでした。(何故?)
Xが無効な識別子になっていたので
Dim X As Long
を付け足しました。

暗号化の文字はStr$に格納されているはずなんですが・・・
なぜでしょう?
C1000
記事: 185
登録日時: 2006年5月07日(日) 17:16
お住まい: 宮城県
連絡する:

#6 投稿記事 by C1000 »

このコード抜けてませんか?

コード: 全て選択

Const X = 5  '暗号化の定数
雷電

#7 投稿記事 by 雷電 »

抜けていました。
しかし、コンパイルしてもINIファイルをのぞくと毎回違う値がPassWordのところに書かれています。

一応コードを載せておきますので間違っている点がありましたら訂正お願いします。
卓漏
記事: 32
登録日時: 2005年11月30日(水) 06:38
お住まい: 静岡県の田舎町

#8 投稿記事 by 卓漏 »

多分、複合化の際に、

コード: 全て選択


'文字列の長さを調べて保存する 
Str_Size = Len(Str$) 

が抜けているのが原因かと思います。

暗号化の定数を変えてなければ、
パスワードを「PASS」とすると、「iniファイル」の中身が、
「UFXX」→「ZK]]」→「_Pbb」→「dUgg」→「iZll」→「dUgg」→・・・
見たいな感じに変わったと思います。
雷電

#9 投稿記事 by 雷電 »

すいません。
訂正してもらったコードをそのまま写してコンパイルしてみて試してみました。
Passのところに、raidenと打つと、INIのほうには

aiden
と表示されました。
もう一度試してみるとINIの中身は同じなのにメッセージが違うといってきました。
メッセージには問題ないと思うのですが、複合化の時の操作?が違うような気がします。私には、よく分からないのですが、複合化のアルゴリズムから考えれば違うのかなーという気がしてきました。

宜しくお願いします。
ゲスト

#10 投稿記事 by ゲスト »

パスワードが「aiden」となるのは、
暗号化処理で、文字列の終わりにつく「NULL」が、書き換えられてしまうのが原因だったみたいです。
雷電

#11 投稿記事 by 雷電 »

できました。
コード訂正ありがとうございました。
卓漏さん、ゲストさん、ありがとうございました。
卓漏
記事: 32
登録日時: 2005年11月30日(水) 06:38
お住まい: 静岡県の田舎町

#12 投稿記事 by 卓漏 »

動いてよかったです。
約1日考え続けた結果がありました。
言い忘れましたが、あのコードのままだと、最大255バイトまでの文字列しかパスワードが設定できないですが・・・・。

「2006年07月19日(水) 07」に書き込んだ「ゲスト」さんは自分なんですがね・・・。(ログインするのを忘れて書き込んでしまったから・・・。)
返信する