Indy9 附件加密疑問 |
答題得分者是:GrandRURU
|
tuna5168
一般會員 發表:3 回覆:4 積分:1 註冊:2011-04-10 發送簡訊給我 |
我利用了 Indy9 的 IdSMTP 與 Idmessage做了一個寄信功能 但現在有一個需求是需要加入附件與 附件要加密 下載附件時讓使用者打密碼 因為我還不是很熟悉Indy其他功能 目前我上網想搜查一下資料(往是否拉encode元件或smtp屬性設定方向查) 但目前還沒有查到如何做到這個功能 不知可否請各位先進給小妹一個提示 謝謝 //附件檔案 if FileExists('c:\chg.txt') then TIdAttachment.Create(IdMessage1.MessageParts, 'c:\chg.txt') else showmessage('error');
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
可以直接將附件使用stream加密的做法
如TIdMessage.SaveToStream等方式 收取端也必需用對應的密碼才能解開並收取 ===================引 用 tuna5168 文 章=================== 我利用了 Indy9 的 IdSMTP 與 Idmessage做了一個寄信功能 但現在有一個需求是需要加入附件與 附件要加密 下載附件時讓使用者打密碼 因為我還不是很熟悉Indy其他功能 目前我上網想搜查一下資料(往是否拉encode元件或smtp屬性設定方向查) 但目前還沒有查到如何做到這個功能 不知可否請各位先進給小妹一個提示 謝謝 //附件檔案 if FileExists('c:\chg.txt') then TIdAttachment.Create(IdMessage1.MessageParts, 'c:\chg.txt') else showmessage('error');
|
tuna5168
一般會員 發表:3 回覆:4 積分:1 註冊:2011-04-10 發送簡訊給我 |
|
tuna5168
一般會員 發表:3 回覆:4 積分:1 註冊:2011-04-10 發送簡訊給我 |
有些疑問想與前輩們討論w
1. 上網查了一些資料 , 發現有 memorystream 與 Filetostream 不知道將附件加密是不是兩種都可以 Stream := TMemoryStream.Create; IdMessage1.SaveToStream(Stream); if Stream.Size > 0 then showmessage('應該有stream吧'); //Gauge.MaxValue := Stream.Size; 這行會有 error end;2. 然後也查了一個 EncryptFile 的 function 所以我變成利用這個 function 將附件加密後包成另一個檔 , 再attachment parts 附件寄出 這種方式我收信時打開附件 , 內文的確有加密 不過我想這樣是否收信的人 , 也要有一個 delphi 寫成的執行檔去解開這個附件 不知道怎樣的方法能達到收信時(如收outlook )點附件~~就問我密碼~~這種功能 是不是要寫出一個完整的收發信功能(如 web mail)才行 , 而不是單純 只寫在寄信時的程式裡呢 謝謝 C1=54321; C2=34234; ..... procedure TForm3.EncryptFile(INFName, OutFName : String; Key : Word); VAR MS, SS : TMemoryStream; X : Integer; C : Byte; begin MS := TMemoryStream.Create; SS := TMemoryStream.Create; TRY MS.LoadFromFile(INFName); MS.Position := 0; FOR X := 0 TO MS.Size - 1 DO begin MS.Read(C, 1); C:= (C xor (Word(Key) shr 1)); // 原 Key shr 8 但 8 不會變亂碼 // Key := C Key * C1 C2; // range check error SS.Write(C,1); end; SS.SaveToFile(OutFName); FINALLY SS.Free; MS.Free; end; end;
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
如果你是想讓使用者能在outlook中打開時輸入密碼
你可以在需要加密時呼叫外部程式做壓縮加密的行為,如呼叫winzip的程式,並給上加密參數之類的 這樣就不會受到「對方要怎麼開」的困擾了 ===================引 用 tuna5168 文 章=================== 有些疑問想與前輩們討論w 1. 上網查了一些資料 , 發現有 memorystream 與 Filetostream 不知道將附件加密是不是兩種都可以 Stream := TMemoryStream.Create; IdMessage1.SaveToStream(Stream); if Stream.Size > 0 then showmessage('應該有stream吧'); //Gauge.MaxValue := Stream.Size; 這行會有 error end;2. 然後也查了一個 EncryptFile 的 function 所以我變成利用這個function 將附件加密後包成另一個檔 , 再attachment parts 附件寄出 這種方式我收信時打開附件 , 內文的確有加密 不過我想這樣是否收信的人 , 也要有一個 delphi 寫成的執行檔去解開這個附件 不知道怎樣的方法能達到收信時(如收outlook )點附件~~就問我密碼~~這種功能 是不是要寫出一個完整的收發信功能(如 web mail)才行 , 而不是單純 只寫在寄信時的程式裡呢 謝謝 C1=54321; C2=34234; ..... procedure TForm3.EncryptFile(INFName, OutFName : String; Key : Word); VAR MS, SS : TMemoryStream; X : Integer; C : Byte; begin MS := TMemoryStream.Create; SS := TMemoryStream.Create; TRY MS.LoadFromFile(INFName); MS.Position := 0; FOR X := 0 TO MS.Size - 1 DO begin MS.Read(C, 1); C:= (C xor (Word(Key) shr 1));//原 Key shr 8 但 8 不會變亂碼 // Key := C Key * C1 C2; //range check error SS.Write(C,1); end; SS.SaveToFile(OutFName); FINALLY SS.Free; MS.Free; end; end;
|
tuna5168
一般會員 發表:3 回覆:4 積分:1 註冊:2011-04-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |