この暗号化方法は、3つの部分に分割されます。
1.レジストリの検索結果に基づいて、設定ダイアログの内容を決定します。
2。初めて使用する場合は、新しいパスワードを設定した場合は、確認してください。
3.パスワード変換アプレット(元のアプレットよりもはるかに複雑な)。もちろん、パスワード機能を変更する必要がある場合は、パスワード設定パーツを変更するだけです。
1.プログラムが開始されたら、レジストリを検索して、ウィンドウの表示コンテンツを決定するパスワードがあるかどうかを判断します。ただし、使用する前に次のステートメントを作成する必要があります。
Tregistryをユーザーに追加し、次のフォーム変数をVAR宣言に追加します。
そこで:Tregistry;
keyname、valuestr、tempsstr:string;
手順tfrmpass.formshow(sender:tobject);
始める
そこに:= tregistry.create;
g.rootkey:= hkey— local— machineを試してください。
keyname:= 'ソフトウェア/mypassword';
//このキーが利用可能な場合、それが存在しない場合、それは作成されます。
g.openkey(keyname、true)の場合、開始します
tempsstr:= extractfilename(application.exename);
ValueStr:= g.readstring(tempstr);
//パスワードが空でない場合は、フォームを変更してパスワードを確認します
ValueStr <> ''の場合、開始します
edit2.visible:= fals.caption: 'パスワードの検証';
edit1.setfocus;
//パスワードが空の場合は、フォームを変更してパスワードを設定しますダイアログボックス
それ以外の場合は始まります
showmessage( '初めてパスワードを設定してください!');
edit2.visible:= true;
edit1.setfocus; ok.caption:= 'set';
endg.closekey;
最後にエンド。
2。ボタンの応答コード:新しいパスワードと検証パスワードを含む。
手順tfrmpass.okclick(sender:tobject);
始める
// edit2が表示されているかどうかに基づいて既存のパスワードを判断し、確認してください
edit2.visible = falseの場合、開始します
パス(edit1.text)= valueStrの場合、開始します
showmessage( 'パスワードは正しい!');
それ以外の場合は始まります
showmessage( 'パスワードは間違っています!操作する許可はありません!');
停止します
それ以外の場合は始まります
edit1.text = edit2.textの場合、開始します
そこに:= tregistry.create;
g.rootkey:= hkey— local— machine;
keyname:= 'ソフトウェア/mypassword';
g.openkey(keyname、true)の場合
g.writestring(tempstr、pass(edit1.text));
closekey;
それ以外の場合は始まります
showmessage( '再び入力されたパスワードは一貫性がありません。再入力してください!');
edit1.text:= ′′;
edit1.setfocus;
終了;
3。パスワード変換プログラム:事前に定義するように注意してください。
私の意見では、この変換ミニプログラムはそれほど複雑ではありません。読者は、他の数学関数を使用して、より複雑な変換を実行することもできます。
関数パス(PSTR:文字列):文字列;
var str、str1:string;
I、J:整数;
始める
str:= pstr;
i:= 1 to length(str)の場合は開始します
//最初の変更をお願いします
j:=(i * i * i mod(i +20))+(i * i mod(i +10))+i *2+1;
str1:= str1+chr(str [i])+j);
j:=(i * i * i mod(i +10))+(i * i mod(i +20))+i *2+1;
str1:= str1+chr(str [i])+j);
パス:= str1;
終わり;