請問這是那忡的編碼方式啊~~~ |
尚未結案
|
paa
初階會員 發表:50 回覆:101 積分:30 註冊:2005-02-01 發送簡訊給我 |
怎麼我在run的時候會有錯啊?可否教教我
function EncryptString(SrcStr, KeyStr:String):String;
var
Source: TStringStream;
Dest: TStringStream;
Size: integer;
Key: TAESKey128;
begin
// Encryption
Source := TStringStream.Create( SrcStr );
Dest := TStringStream.Create( '' ); try
// Save data to memory stream...
Size := Source.Size;
Dest.WriteBuffer( Size, SizeOf(Size) ); // Prepare key...
FillChar( Key, SizeOf(Key), 0 );
Move( PChar(KeyStr)^, Key, Min( SizeOf( Key ), Length( KeyStr))); // Start encryption...
EncryptAESStreamECB( Source, 0, Key, Dest );
Result:=Dest.DataString; finally
Source.Free;
Dest.Free;
end;
end; function DecryptString(SrcStr, KeyStr:String):String;
var
Source: TStringStream;
Dest: TStringStream;
Size: integer;
Key: TAESKey128;
begin
// Convert hexadecimal to a strings before decrypting...
Source := TStringStream.Create( SrcStr ));
Dest := TStringStream.Create( '' ); try
// Start decryption...
Size := Source.Size;
Source.ReadBuffer(Size, SizeOf(Size)); // Prepare key...
FillChar(Key, SizeOf(Key), 0);
Move( PChar(KeyStr)^, Key, Min( SizeOf( Key ), Length( KeyStr))); // Decrypt now...
DecryptAESStreamECB(Source, Source.Size - Source.Position, Key, Dest); Result:=Dest.DataString; finally
Source.Free;
Dest.Free;
end;
end; procedure TForm1.encryptClick(Sender: TObject);
begin
edit2.Text:=EncryptString(edit1.Text);
end; procedure TForm1.decryptClick(Sender: TObject);
begin
edit3.Text:=DecryptString(edit2.Text);
end; end.
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
paa您好:
procedure TForm1.encryptClick(Sender: TObject); begin edit2.Text:=EncryptString(edit1.Text,'123'); //需传两个参数! end; procedure TForm1.decryptClick(Sender: TObject); begin edit3.Text:=DecryptString(edit2.Text,'123'); end; end.试试看 ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ |
paa
初階會員 發表:50 回覆:101 積分:30 註冊:2005-02-01 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
引言: undeclared identifier:'taeskey128' undeclared identifier:'min' undeclared identifier:'encryptaesstreamecb' 有錯耶,請問我上面貼的程式是aes嗎?需uses math,ElAES 详细参考天使大人的实例,我见您之前也有问过的 http://delphi.ktop.com.tw/topic.php?topic_id=23646 或参考: http://delphi.ktop.com.tw/topic.php?topic_id=72705 小弟里面的回答,GOOD LUCK! ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ 發表人 - deity 於 2005/06/28 00:25:45 |
paa
初階會員 發表:50 回覆:101 積分:30 註冊:2005-02-01 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; Edit3: TEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; const C1 = 52845; C2 = 22719; function Encrypt(const S: String; Key: Word): String; //字串加密 function Decrypt(const S: String; Key: Word): String; //字串解密 implementation {$R *.dfm} function Encrypt(const S: String; Key: Word): String; var I: Integer; begin Result := S; for I := 1 to Length(S) do begin Result[I] := char(byte(S[I]) xor (Key shr 8)); Key := (byte(Result[I]) Key) * C1 C2; end; end; function Decrypt(const S: String; Key: Word): String; var I: Integer; begin Result := S; for I := 1 to Length(S) do begin Result[I] := char(byte(S[I]) xor (Key shr 8)); Key := (byte(S[I]) Key) * C1 C2; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Edit2.Text:=Encrypt(Edit1.Text ,111); end; procedure TForm1.Button2Click(Sender: TObject); begin Edit3.Text:=Decrypt(Edit2.Text ,111); end; end.1、是作业的话,就得自己多多实践,再则站内不准将作业自己不作思考就放上来让别人帮助解答。 2、上述算法很简单,将字串每个取出与密钥异或即加密完毕,是32 bits encode/decode module书中的一个算法,非AES算法。如非要AES算法的话,可将站长大人的略作修改即可,这就得您自己去实践了,这样才会有更大的进步哦 > <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ > |
paa
初階會員 發表:50 回覆:101 積分:30 註冊:2005-02-01 發送簡訊給我 |
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text:=Encrypt(Edit1.Text ,111);
end; procedure TForm1.Button2Click(Sender: TObject);
begin
Edit3.Text:=Decrypt(Edit2.Text ,111);
end;
end.
missing operator or semicolon
Lncompatible types:'String' and 'TButton'
會出現這兩行錯耶,可否跟我說一聲啊,想做一個簡單的字串加解密。謝謝。
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
paa
初階會員 發表:50 回覆:101 積分:30 註冊:2005-02-01 發送簡訊給我 |
function EncryptString(SrcStr, KeyStr:String):String;
var
Source: TStringStream;
Dest: TStringStream;
Size: integer;
Key: TAESKey128;
begin
// Encryption
Source := TStringStream.Create( SrcStr );
Dest := TStringStream.Create( '' ); try
// Save data to memory stream...
Size := Source.Size;
Dest.WriteBuffer( Size, SizeOf(Size) ); // Prepare key...
FillChar( Key, SizeOf(Key), 0 );
Move( PChar(KeyStr)^, Key, Min( SizeOf( Key ), Length( KeyStr))); // Start encryption...
EncryptAESStreamECB( Source, 0, Key, Dest ); Result:=Dest.DataString; finally
Source.Free;
Dest.Free;
end;
end; function DecryptString(SrcStr, KeyStr:String):String;
var
Source: TStringStream;
Dest: TStringStream;
Size: integer;
Key: TAESKey128;
begin
// Convert hexadecimal to a strings before decrypting...
Source := TStringStream.Create( SrcStr ));
Dest := TStringStream.Create( '' ); try
// Start decryption...
Size := Source.Size;
Source.ReadBuffer(Size, SizeOf(Size)); // Prepare key...
FillChar(Key, SizeOf(Key), 0);
Move( PChar(KeyStr)^, Key, Min( SizeOf( Key ), Length( KeyStr))); // Decrypt now...
DecryptAESStreamECB(Source, Source.Size - Source.Position, Key, Dest); Result:=Dest.DataString; finally
Source.Free;
Dest.Free;
end;
end; procedure TForm1.encryptClick(Sender: TObject);
begin
edit2.Text:=EncryptString(edit1.Text);
end; procedure TForm1.decryptClick(Sender: TObject);
begin
edit3.Text:=DecryptString(edit2.Text);
end;
end.
undeclared identifier:'taeskey128'
undeclared identifier:'min'
undeclared identifier:'encryptaesstreamecb'
不好意思,可以在幫我解決這個錯誤嗎?是上面這三個錯,因為你給我的那個方法,好像會少一個bit,在edit上,還可以解決,可是用在access上時,就不行了。打中文字打多一點就會少點一個字。不好意思喔。
|
paa
初階會員 發表:50 回覆:101 積分:30 註冊:2005-02-01 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
paa您好:
不知您有无真正的看过我的所答
class="code">
procedure TForm1.encryptClick(Sender: TObject);
begin
edit2.Text:=EncryptString(edit1.Text);
end; procedure TForm1.decryptClick(Sender: TObject);
begin
edit3.Text:=DecryptString(edit2.Text);
end;
上面的两句的写法一直都没变,当然会报错了。 2、当您第二次问:
undeclared identifier:'taeskey128'
undeclared identifier:'min'
undeclared identifier:'encryptaesstreamecb'
有錯耶,請問我上面貼的程式是aes嗎?
我有回答:需uses math,ElAES
详细参考天使大人的实例,实例里面有您上面代码基本上类似的代码,只需略作修改即可,但您到最后还是说出现上述三条错误? 3、其实觉得问题的关键不是说解决了此次的加密方法,而是您的学习方法,查找资料的方法及问问题的方法应很好的去解决,加油喔。
>
> <>
============================
为什么经过多年以后,得失的过程如此冷漠
============================
> 發表人 -
|
paa
初階會員 發表:50 回覆:101 積分:30 註冊:2005-02-01 發送簡訊給我 |
你好:以下是我想用aes的方法,我把站長的程式稍微修改一下,可以幫我看一下嗎,最後三行我不太懂怎麼改耶
function Encrypt(S, Keyword:String):String;
var //輸入字串//輸入密碼
Source: TStringStream;
Dest: TStringStream;
Start, Stop: cardinal;
Size: integer;
Key: TAESKey128; begin
// Encryption
Label_Status.Caption := 'Encrypting...';
Refresh;
Source := TStringStream.Create( s );//輸入字串
Dest := TStringStream.Create( '' ); try
// Save data to memory stream...
Size := Source.Size;
Dest.WriteBuffer( Size, SizeOf(Size) );//寫入字串長度到dest裡 // Prepare key...
FillChar( Key, SizeOf(Key), 0 );
Move( PChar(keyword)^, Key, Min( SizeOf( Key ), Length( keyword ))); // Start encryption...
// Start := GetTickCount;
EncryptAESStreamECB( Source, 0, Key, Dest );
// Stop := GetTickCount;
// Label_Time.Caption := IntToStr(Stop - Start) ' ms';
// Refresh; // Display encrypted text using hexadecimals...
下面這三行我不知道怎麼改了
Memo_CyperText.Lines.BeginUpdate;
Memo_CyperText.Text := StringToHex( Dest.DataString );
Memo_CyperText.Lines.EndUpdate; finally
Source.Free;
Dest.Free;
end;
end;。
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=encrypt(edit2.Text,1234567890123456);
end.
可以教教我嗎?麻煩你了謝謝。
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
Paa您好:
您有无去下载过我上传的档案来看看!里面有完整的档案!问了这么多次我不得不说您,还请仔细去查看别人的回答,不要盲目的去找答案!我上面说得非常的清楚:
4、对于您的问题,我已经帮您除错修正,重新上传至下列链接:
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=74084
点上面链接进去就可以下载!
您的有看过我的回答吗< >< >
或直接下载:
http://delphi.ur-solution.com/delphi_download/upload/74084_ForPaa.rar
http://delphi2.ktop.com.tw/download/upload/74084_ForPaa.rar 最后一次提醒您:请认真仔细的查看别人的回答!
============================
为什么经过多年以后,得失的过程如此冷漠
============================
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |