在 Delphi 中用Indy发送加密签名邮件

vohkndzv  于 2023-01-25  发布在  其他
关注(0)|答案(2)|浏览(127)

我想在发送电子邮件之前加密并签名。我查看了Indy组件帮助/演示,似乎Indy不支持电子邮件加密。
Indy支持发送加密和签名的电子邮件吗?如果支持,我该怎么做?
否则,是否有另一个 Delphi 组件/库可以做到这一点?

6yt4nkrj

6yt4nkrj1#

目前,Indy本身不支持电子邮件的加密和签名。
加密是可能的一些手动工作,使用第三方库的PGP等。
由于Indy在发送电子邮件时采用动态格式,签名变得更加困难。签名包括在发送前对电子邮件字段和数据进行采样,存储器中的内容不一定是通过网络传输的内容,这使得签名变得困难,但并非不可能。
然而,Indy可以对到电子邮件服务器的套接字连接进行本地加密,但是电子邮件本身仍然是纯文本的,除非由接收者或中间网关进行加密。
确实有第三方解决方案来发送安全电子邮件。例如:
Send Email with Digital Signature in Delphi - S/MIME
StreamSec
(可以在Indy上使用S/MIME)

ecr0jaav

ecr0jaav2#

I found this (I think) on the Embarcadero website, so it's published and not 
secure.  However, it works elegantly to encrypt the subject.  This does not work 
on the body. I'm working a solution for that.

Endecrypt({5508BD43-3B8A-44CD-BCD2-99DED0A0218C}{7C5916C6-CC65-4F20-9DF7- 
4019D9E6306D}
...becomes...
 トᅧᅧᅬᅦᄑ켸ᅩᅭᅩ페효ᅨᅨᄐ쿄ᄑᄐ콰ᅭᅥᅥᄏᄎ쾨회ᅪᅫᅦᄐツト￈텨ᅥᅫ￉ᄐ￉ᅭᄐᄐ￉ᅧᅭᅨ쫘ᅬᅭᅥᄏᄍ￈ᅭᅨᅬᅫᅥ커ᄎ￉ᅩᅬ￉ᄏツ

To "un" crypt, simply make the encrypted text the passed value.

function TForm1.EnDeCrypt(const Value : String) : String;
var CharIndex : integer;
begin
  Result := Value;
  for CharIndex := 1 to Length(Value) do
    Result[CharIndex] := chr(not(ord(Value[CharIndex])));
end;

 just me Sam

相关问题