⑴ delphi rsa公鑰加密,是否有不用模數的方式
公鑰文件本身就包含了模數和公鑰。
以1024位公鑰為例,使用UE32或winhex軟體打開公鑰文件。
//前4個位元組(0-3)是公鑰長度:00 00 00 80為128位元組
/迅團/後察胡面跟的128位元組(4-131)為畝沒橘公鑰的n值,這里直接放到程序中
//再後面的4個位元組(132-135)為值
//最後4個位元組(136-139)是公鑰的e值:00 01 00 01為65537。
希望對你有所幫助。
⑵ 用注冊表對Delphi程序加密
本加密方法分三部分 根據對注冊表的搜索結果判定設置對話框的內容 若初次使用 則設新密碼 若是已經設置密碼檔卜 則進行驗證 一個密碼變換小程序(比原來的復雜得多) 當然 如果需要修改密碼的功能 只要將設置密碼部分改動一下即可 一 程序啟動時 通過搜索注冊表 判斷是否已有密碼 來確定窗口的顯示內容 不過事先應有以下的聲明然後才能使用 在user中加入TRegistry 在var聲明中加入以下幾個窗體變數 TheReg: TRegistry;KeyName ValueStr tempStr:String; procere TfrmPass FormShow(Sender: TObject); beginTheReg := TRegistry Create;try TheReg RootKey := HKEY—LOCAL—MACHINE;KeyName := ′SOFAREMypassword′;//有該鍵則打開 沒有則創建if TheReg OpenKey(KeyName True) then begin檔灶tempStr:=ExtractFileName(Application ExeName); //讀取密碼ValueStr:=TheReg ReadString(tempStr);//密碼不為空則修改窗體為驗證密碼if ValueStr<>′′ then beginedit Visible:=false; frmPass Caption:=′驗證密碼′;edit SetFocus; OK Caption:=′確定′; end//密碼為空則修改窗體為設置密碼對話框else beginshowmessage(′第一次使用請設置密碼!′);edit Visible:=true; frmPass Caption:=′請設置新密碼′;edit SetFocus; OK Caption:=′設置′;行蠢扮end; TheReg CloseKey; end;finally TheReg Free; end; end; 二 按鈕的響應代碼 包括新設密碼和驗證密碼 procere TfrmPass OKClick(Sender: TObject);begin//根據Edit 的顯示與否判斷已有密碼 進行驗證if edit Visible=false then beginif pass(edit text)=ValueStr then beginshowmessage(′密碼正確!′); endelse beginshowmessage(′密碼不正確!無權操作!′);halt; end; end //無密碼 設置新密碼else beginif edit text=edit text then beginTheReg := TRegistry Create;TheReg RootKey := HKEY—LOCAL—MACHINE;KeyName := ′SOFAREMypassword′;if TheReg OpenKey(KeyName True) thenTheReg WriteString(tempStr pass(edit text));TheReg CloseKey; endelse beginshowmessage(′再次鍵入的密碼不一致 請重輸!′);edit text:=′′; edit text:=′′;edit SetFocus; end; //進行下一步操作 end; end; 三 密碼變換程序 注意要預先定義 這個變換小程序在筆者看來還不算很復雜 只進行了兩次變換 不過 想要破譯也是得費點勁 讀者還可以採用其他的數學函數進行更為復雜的變換 function pass(pstr:string):string;var str str :string; i j:integer; beginstr:=pstr;for i:= to length(str) do begin//進行第一次變換j:=(i*i*i mod (i+ ))+(i*i mod (i+ ))+i* + ;str :=str +chr(ord(str[i])+j); //第二次變換j:=(i*i*i mod (i+ ))+(i*i mod (i+ ))+i* + ;str :=str +chr(ord(str[i])+j); end;pass:=str ; end; lishixin/Article/program/Delphi/201311/24821
⑶ Delphi加密演算法
我用孝棗的加密巧搏拆解密
function EncryptString(Source, Key: string): string;
//對字元串加密(Source:源 Key:密匙)
var
KeyLen: integer;
KeyPos: integer;
Offset: integer;
Dest: string;
SrcPos: integer;
SrcAsc: integer;
Range: integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'delphi';
KeyPos := 0;
Range := 256;
randomize;
Offset := random(Range);
Dest := format('%1.2x', [Offset]);
for SrcPos := 1 to Length(Source) do
begin
SrcAsc := (Ord(Source[SrcPos]) + Offset) mod 255;
if KeyPos < KeyLen then
KeyPos := KeyPos + 1
else
KeyPos := 1;
SrcAsc := SrcAsc xor Ord(Key[KeyPos]);
Dest := Dest + format('%1.2x', [SrcAsc]);
Offset := SrcAsc;
end;
result := Dest;
end;
function UnEncryptString(Source, Key: string): string;
//對字元串解密(Src:源 Key:密匙)
var
KeyLen: integer;
KeyPos: integer;
Offset: integer;
Dest: string;
SrcPos: integer;
SrcAsc: integer;
TmpSrcAsc: integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'delphi';
KeyPos := 0;
Offset := strtoint('$' + (Source, 1, 2));
SrcPos := 3;
repeat
SrcAsc := strtoint('$' + (Source, SrcPos, 2));
if KeyPos < KeyLen then
KeyPos := KeyPos + 1
else
KeyPos := 1;
TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);
if TmpSrcAsc <銀世= Offset then
TmpSrcAsc := 255 + TmpSrcAsc - Offset
else
TmpSrcAsc := TmpSrcAsc - Offset;
Dest := Dest + chr(TmpSrcAsc);
Offset := SrcAsc;
SrcPos := SrcPos + 2;
until SrcPos >= Length(Source);
result := Dest;
end;
⑷ 如何在Delphi軟體中實現對配置文件的加密解密
直接先加密在放到ini 文件里
要用的時候直接解密出來就可以了
至於用什麼加密演算法看你自己喜歡
推薦用base64演算法不錯 網上到處有的下
⑸ 該怎麼解決,delphi實現DES位元組流加密
在 CnPack 提供的源代碼包里,提供了 des 加解密單元文件,提供了以下四個功能函數:
function DESEncryptStr(Str, Key: AnsiString): AnsiString;
{* 傳入明文與加密 Key,DES 加密返回密文,
註:由於密文可能含有擴展 ASCII 字元,因此在 DELPHI 2009 或以上版數滲本中,請用
AnsiString 類型的變數接收返回值,以避免出現多餘的 Unicode 轉換而導致解密出錯}
function DESDecryptStr(Str, Key: AnsiString): AnsiString;
{* 傳入密文與加密 Key,DES 解賣畢罩密返回明文}
function DESEncryptStrToHex(Str, Key: AnsiString): AnsiString;
{* 傳入明文與加密 Key,DES 加密返回轉換成十六中鬧進制的密文}
function DESDecryptStrFromHex(StrHex, Key: AnsiString): AnsiString;
{* 傳入十六進制的密文與加密 Key,DES 解密返回明文}
⑹ Delphi程序的時限和加密方法
本例中TRegistry是關鍵類 Delphi 不能自行加入 需在uses部分手工加入 registry 通過其方法 ReadString 和 WriteString 來讀出和寫入字元 亦可通過其方法 ReadDate 和 WriteDate 來讀出和寫入日期
程序第一次運行就寫入其運襲絕行時間 應用期限為 天侍禪坦 超過 天就不再運行 全局變數NoRegistry SpareDays來分別判斷是否注冊和剩餘期限 自定義函數Encrypt為用戶名到
密碼的變換函數
一 程序啟動時 通過搜索注冊表 判斷是否第一次運行和是否注冊 來確定程序是否運行
procere TForm FormCreate(Sender: TObject);var Reg:Tregistry;KeyName TempCode TempName TempStr:string; Same:Integer; FirstDate NowDate:Tdatetime; NumberOfDays:real;begin NoRegistry:=true;NowDate:=date; //取得運行時系統日期try//創建注冊表 有該鍵則讀取 無則創建 Reg:=Tregistry Create ; Reg RootKey :=ey_local_machine; KeyName:= Sofarejsjbxample ; if Reg OpenKey(KeyName true) then begin TempName:=Reg ReadString( UsrName ); TempCode:=Reg ReadString( Passwd );//讀取用戶名 注冊號 try FirstDate:=Reg ReadDate( Date );//非第一次則讀入第一次運行時間 except Reg WriteDate( Date NowDate);// 若為第一次運行 則寫入系統日期 FirstDate:=NowDate; end; end ; reg CloseKey ; finally reg Free ; end; TempStr:=Encrypt(TempName);//通過自定義函數Encrypt()來獲取密碼 Same:=CompareText(TempStr TempCode);//比較密碼 if TempName<> then if Same= then NoRegistry:=false;//驗證密碼 通過NoRegistry為false if NoRegistry then begin //若未注冊 NumberOfDays:=Nowdate FirstDate;SpareDays:=round( NumberOfDays);Label Caption :=FloatToStr(SpareDays);if((NumberOfDays> ) or (NumberOfDays< )) thenbeginshowmessage( 程序未注冊超過試用期或更改系統時間 將終止運行! );application Terminate;//超過 天 則禁止運行end;end;end;
二 注冊過程 其響應入口可放於 About 內
procere TAbout Button Click(Sender: TObject);var InptName InptCode RealCode:String; Same:Integer; Reg:Tregistry; Keyname:String;begin if NoRegistry then //未注冊時做 begin RealCode:= ; InptName:= InputBox( 注冊 輸入你的名字 ); if InptName<> then begin老桐 InptCode:= InputBox( 注冊 輸入注冊號 ); RealCode:=Encrypt(InptName);Same:=CompareText(RealCode InptCode); if (Same<> ) thenshowmessage( 注冊號碼不對 注冊未成功! ) else begin //密碼匹配時做 把用戶名 密碼寫入注冊表 TryReg:=Tregistry Create ;Reg RootKey :=ey_local_machine;KeyName:= Sofarejsjbxample ;if Reg OpenKey(KeyName true) then beginReg WriteString( Passwd InptCode);Reg WriteString( UsrName InptName); end; reg CloseKey ; finally Reg Free ; end; NoRegistry:=false;//可修改注冊後的界面 end; end; end;end; 三 密碼的變換函數 此變換函數可由讀者自由發揮 在此 僅示一例而已
lishixin/Article/program/Delphi/201311/8395
⑺ 用Delphi製作文本文檔程序,在文本中內容加密,我的思路是把文本內容打成亂碼,在點擊「解密」變回原來的
我以前也做過這種小程序。這個演算法你可以自己設計,也可以用像什麼MD5之類的加解密演算法咯。
但因為不能粘貼附件,所以就貼點代碼襪汪。
procere TForm1.N2Click(Sender: TObject);//打開文件
var
tl:string;
begin
if OpenDialog1.Execute then
begin
ListBox1.Clear;
Caption:='文件加攜拿密解密器'+OpenDialog1.FileName;
AssignFile(ATextFile,OpenDialog1.FileName);
Reset(ATextFile);
while not eof(ATextFile) do
begin
Readln(ATextFile,tl);
ListBox1.Items.Add(tl);
end;
CloseFile(ATextFile);
end;
end;
function Encode(s:string):string;/告隱仔/加密的核心部分
var
n,i:integer;
str:string;
begin
n:=length(s);
str:='';
for i:=1 to n do
begin
str:=str+char(ord(s[i])+10);
end;
Encode:=str;
end;
function Decode(s:string):string;//解密的核心部分
var
n,i:integer;
str:string;
begin
n:=length(s);
str:='';
for i:=1 to n do
begin
str:=str+char(ord(s[i])-10);
end;
Decode:=str;
end;
procere TForm1.N3Click(Sender: TObject);//加密
var
ln:integer;
tl,nl:string;
begin
if SaveDialog1.Execute then
begin
AssignFile(ATextFile,SaveDialog1.FileName);
Rewrite(ATextFile);
for ln:=0 to ListBox1.Items.Count-1 do
begin
tl:=ListBox1.Items[ln];
nl:=Encode(tl);//加密
Writeln(ATextFile,nl);
end;
CloseFile(ATextFile);
end;
end;
procere TForm1.N4Click(Sender: TObject);//解密
var
ln:integer;
tl,nl:string;
begin
if SaveDialog1.Execute then
begin
AssignFile(AtextFile,SaveDialog1.FileName);
Rewrite(ATextFile);
for ln:=0 to ListBox1.Items.Count-1 do
begin
tl:=ListBox1.Items[ln];
nl:=Decode(tl);//解密
Writeln(ATextFile,nl);
end;
CloseFile(ATextFile);
end;
end;