よくフリーであるような、
ボタンを押したらロックするみたいな感じのソフトを
つくりたいのですが、どのようにするとロックできるのでしょうか?
CFile fin(m_text1,CFile::modeRead| CFile::typeBinary);
CFile fout(m_text2,CFile::modeCreate|CFile::modeWrite| CFile::typeBinary);
while((ct=fin.Read(ss,8000))!=0){//ssの配列にデータを確保
}
こんなかんじなのですが教えてください。
MFC であると仮定して
バイト列のロック
CFile::LockRange
CFile::UnlockRange
書込み禁止
CFile::Open(hogehoge, CFile::shareDenyWrite | ... , NULL);
読込み禁止
CFile::Open(hogehoge, CFile::shareDenyRead | ... , NULL);
読書き禁止
CFile::Open(hogehoge, CFile::shareDenyExclusive | ... , NULL);
ttp://www.vector.co.jp/soft/win95/util/se112363.html
このようなものを期待するのであれば、
暗号化・復号化アルゴリズムを勉強しないとダメですね。
# 私見ですが、これは「ロック」ではなくて、
# 「エンコード(暗号化)」だと思うんですけどね。
ヌルをつけると
3 個の引数を持つオーバーロードされた関数はありません。
とエラーがでるのですが。
どうすればよいのでしょうか。
言わんとしている事がよくわからないですねぇ。
U-tさんの質問には答えていないようだし。
ファイルロックソフトが起動していてソフト上のボタンを押すと
対象にしているファイルが他のソフトからOpenできなくなると
考えていいのですか?
それとも、そのソフトでないと開けないようなファイルを作成する
ソフトを作りたいのでしょうか?
前者ならボタンを押したら排他指定でファイルオープンすれば良いだけだし、
後者なら暗号化のお勉強が必要になるでしょう。
兎にも角にも質問に対する答えをまず書きましょう。
ちなみにあなたが書いている例のコードにU-tさんが書かれているものを
そのまま適応しても駄目です。
あなたが呼んでいるのはCFileクラスのコンストラクタで
U-tさんが書かれているのはCFileクラスのOpenメソッドです。
この辺は、VCのHELPをちゃんと読みましょう。
すみませんでした。
私が行おうとしているのは後者です。
というのも、今作ろうとしているのはあんごう・復号ソフトなのです。
読み込んでコードかえてあんごうして復号するのはできるのですが、
あんごうしてからロック、復号してロック解除、というのが
どうすればよいか分からないのです。
ちなみに管理者制限により、上記のアドレスは開けませんでした。
あんごう、という文字でわれわれは制限をくらっているみたいなので
「ロック」の定義があいまいなんですが、
zipファイルのようにパスワードを設定するということですか?
そうであると仮定して
1. パスワード文字列を使用して暗号化・復号化を行なう。
2. ファイルのヘッダ部分にパスワードを暗号化したものを書き込む。
方法1は、パスワードクラックするのに総当りチェックを
しなければならないので、比較的強固な暗号化だと思います。
ただ、現在の暗号化・復号化ルーチンを書き換える必要があるので
手間はかかります。
方法2は、暗号化ファイルの先頭にパスワードヘッダを追加するだけなので
簡単に実装できますが、パスワードも比較的簡単に破られます。
また、EXEのパスチェック部分を書き換えればパスワードを解析する必要も
なくなりますしね;
# そこまでしてパスワードクラックをする人も少ない気がしますが;
>あんごう、という文字でわれわれは制限をくらっているみたいなので
このスレにも暗号という言葉が沢山出てるような気がするのですが・・・。
# CGI だとプロキシで弾かれないのですかね
## 上記のアドレスはコピペじゃアクセスできませんよ?
そうですね、まぁつまりはクリックしても
無理やりテキストソフトに入れても、開けなくするってことなのですが・・・。
上記のやり方でそのような感じにできますか?
アドレスにh足すくらいは分かりますよ。
まぁ、yahooなどでの検索であんごう(漢字限定かもしれないが)という文字は
すでに検索できない状況でして。。。
少し他の方向にネットを利用したために色々ワード制限が掛けられてしまったんですよね。
ですのでこのページも何とか読み出してます。
>無理やりテキストソフトに入れても、開けなくするってことなのですが・・・。
'開けなくする'のであれば排他処理
'開けても内容をわからなくする'のであれば暗号化
暗号化・復号化ができているのですから、
暗号化されたデータを保存→オリジナルファイルの削除
復号化されたデータを保存→暗号化されたファイルの削除
という処理を追加すればいいのではないでしょうか。
パスワード云々というのは、Casさんが作ったソフトを
複数の人が使用するということを前提にしていました。
自分一人で使用するのであれば、パスワードを設定する
必要性は薄れます。
何にしても、表現があいまいなので、
あなたの望む回答を得るのは難しいと思います。
>Cas 2004/01/19(月) 09:24:41
>よくフリーであるような、
>ボタンを押したらロックするみたいな感じのソフト
「ファイルロック」で検索すると、
暗号化ソフトが引っかかったので、
ロック = 暗号化?
>Cas 2004/01/21(水) 09:12:38
>私が行おうとしているのは後者です。
ロック = 暗号化 であることを肯定?
>あんごうしてからロック、復号してロック解除
暗号化してから「ロック」という処理を行ないたいということは、
ロック = 暗号化 ではない?
>Cas 2004/01/22(木) 10:34:40
>そうですね、まぁつまりはクリックしても
「ロック」という処理はパスワードの設定であることを肯定
ロック = パスワードの設定?
>無理やりテキストソフトに入れても、開けなくするってことなのですが・・・。
テキストエディタでは、基本的にどんなファイルも無理矢理開くことができるので、
排他制御を行ないたい?
ロック = 排他制御?
結局何がしたいんでしょうか?
# 長文失礼
結局は、あんごう化したファイルをパスワードで保護して開けなくしたいんですよね。
あんごう化しただけでは、改ざんされてデータが復号できなくなりますし。
うーむ。よくわからんなぁ。
パスワード掛ければ、改ざんできないというのが良く分かりません。
パスワードと言うのはそれをちゃんと読めるソフトで開く時に必要なものなのであって
それを使ってファイルを開き、改ざんした後に再度暗号化しても復号は出来ますよね。
復号が出来なくなるような改ざんと言うのは暗号化されたファイルをバイナリエディタ
などで直接弄ったりした時のはずですからパスワードなんか掛けても全く無意味です。
なぜなら、バイナリエディタなどに放り込んで中身を弄るのにあなたが設定したパスワ
ードは全く必要ないからです。
蛇足。
>まぁ、yahooなどでの検索であんごう(漢字限定かもしれないが)という文字は
>すでに検索できない状況でして。。。
>少し他の方向にネットを利用したために色々ワード制限が掛けられてしまっ
>たんですよね。
>ですのでこのページも何とか読み出してます。
要するに学校かどこかの共有のパソコンでまずい事をしたので制限を掛けられたって
ことですよね。
共有のマシンなのでしたら使い方も考えないといけないと思いますよ。
フリーでよくみかけるソフトはそれではどうなっているのですか?
パスワードでロックをかけて改ざんされないようにしているんではないんでしょうか?
あんごうか掛けただけでは、テキストエディタなどで簡単にデータを消したり
追加したりできてしまうので、復号化は出来なくなってしまうと思うのですが。
そうではなくて、パスワードの目的はそのファイルから情報を引き出せなくする事で
あって、改ざんさせないと言う意味ではないと言うことです。
改ざんさせないと言う目的でパスワードを使う事は意味がないといっているわけです。
暗号化すると特定のソフトで復号しないと中から情報を取り出す事が出来ませんよね。
最近の暗号化は特定のパスワードを暗号化の種に使ったりして簡単に復号できないように
していますけれど、
簡単な暗号化の場合はそのソフトがあれば簡単に復号できてしまいます。
(例えば、オリジナルの文字コードに特定の数値を足して意味不明の文章にする等々)
パスワードはその復号できるソフトがあっても簡単に復号できないようにするためのもの
なのです。
従って、あなたが言っている改ざんをさせないという目的にはむきません。
あと、パスワードを掛けたからと言ってそのパスワードを必要としないエディタで
開く場合は全く意味がないです。
パスワードはあくまでもあなたが作ったソフトでファイルを開く時に必要なのであって
ネット上で手に入るテキストエディタには全く必要がないものです。
従って画面上に意味不明の内容が表示されるだけですが、
改ざんは簡単に出来てしまいます。
ファイルに対してのアクセスを禁止するのであれば、NT系のOSのファイルシステムにある
ファイルのアクセス権を設定し、
特定のユーザーでしか開けないようにするしかないでしょう。
すいません、なんかかんちがいしていました。
よーくりかいすることができました。
結局、クリックやエディタでひらけなくするロックは実現できないんでしょうか?
はっきり言って、windowsやNTのユーザ別に設定したりを使ってしまえば
十分なのですがね。
どうしてもあんごうとロックができるソフトが作りたかったもので。。。
> ロックは実現できないんでしょうか?
あなたの質問を理解できないのですよ
「クリックやエディタでひらけなくする事は実現できないんでしょうか?」
と聞けば良かったのでは?
ファイルは見えているが、ファイルを開く事はできないという状態を
アプリケーションで作るのは難しいと思う
単なるアプリケーションなら、ユーザが終了させたら、それ以降は何もできませんから
http://www.mtakahashi.com/cgi.cgi?10531
結局おんなじ話だし。。。
>よくフリーであるような、
>ボタンを押したらロックするみたいな感じのソフトを
って何のソフト?
「~のソフトと同じ機能を実装したい」で終わりなのでは?