全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2017
推到 Plurk!
推到 Facebook!

請問這是那忡的編碼方式啊~~~

尚未結案
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-27 23:21:55 IP:210.60.xxx.xxx 未訂閱
怎麼我在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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-27 23:41:12 IP:219.129.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-27 23:47:06 IP:210.60.xxx.xxx 未訂閱
undeclared identifier:'taeskey128' undeclared identifier:'min' undeclared identifier:'encryptaesstreamecb' 有錯耶,請問我上面貼的程式是aes嗎?
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-28 00:16:00 IP:219.129.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-28 15:17:22 IP:210.60.xxx.xxx 未訂閱
真是太good luck了,謝謝你貼這麼好的程式給我,可是請問這是什麼的方法呢?像是aes還是那忡編碼呢?不然老師會問我,又說我亂copy下來的,可否告訴我呢?對了,我想對字串做加解密,可是怎麼run的時候會有錯啊 procedure TForm1.encryptClick(Sender: TObject); begin edit2.Text:=Encrypt(edit1.Text,111); end; 因為我是想引用在資料庫access裡的。
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-28 17:13:57 IP:218.15.xxx.xxx 未訂閱
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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-28 17:21:45 IP:210.60.xxx.xxx 未訂閱
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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-28 18:16:30 IP:219.129.xxx.xxx 未訂閱
其实我上面已经给出了全部的代码来了,我试过没问题的 我已经将程式上传上来,如下: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=74084 参考 <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-28 20:44:54 IP:210.60.xxx.xxx 未訂閱
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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-06-28 21:08:46 IP:210.60.xxx.xxx 未訂閱
我確定那是aes的function了,只是不懂為什麼會有那三行錯。謝謝
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-06-28 22:52:41 IP:219.129.xxx.xxx 未訂閱
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

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-06-29 00:06:55 IP:210.60.xxx.xxx 未訂閱
你好:以下是我想用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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-06-29 08:11:45 IP:218.15.xxx.xxx 未訂閱
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 最后一次提醒您:请认真仔细的查看别人的回答! ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
系統時間:2024-11-22 10:36:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!