黑兔子 發表於 2019-11-7 14:56:00

Delphi- 数据加密和解密

<p>Delphi进行数据加密,在数据库方面经常要使用到。从网上转载过来的,以后会经常会用到。</p>
<p>  一、<strong>MD5加密算法</strong></p>
<p>  在C#/.Net里提供了MD5加密的类库。在Delphi中没有。只能自己建一个新的单位,将网上别人写的MD5加密函数拿来用。</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif">&nbsp;<span class="cnblogs_code_collapse">View Code</span></div>
<p>  调用方法:</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img alt="复制代码" data-src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre>var
    md5: TMD5Digest;      //MD5Unit.pas
    passwordSource:string;
    passwordDestinate:string;
begin
    passwordSource:='testStringForMD5';

    MD5String(passwordSource, @md5);
    passwordDestinate:= LowerCase(MD5DigestToStr(md5));

    ShowMessage(passwordDestinate);
end;</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<p>  调用方法二:</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre>uses MD5Unit,IdHashMessageDigest,IdHash;
procedure TForm1.btn1Click(Sender: TObject);
var
MyMD5: TIdHashMessageDigest5;//IdHashMessageDigest.pas
Digest: T4x4LongWordRecord; //IdHash.pas
passwordSource:string;

passwordDestinate32:string;
passwordDestinate16:string;
begin
passwordSource:='testStringForMD5';
MyMD5 := TIdHashMessageDigest5.Create;

Digest := MyMD5.HashValue(passwordSource);
passwordDestinate32:=LowerCase(MyMD5.AsHex(Digest)); //32个字符长度的MD5签名结果
passwordDestinate16:=Copy(passwordDestinate32, 9, 16);//16个字符长度的MD5签名结果

ShowMessage('32: ' +passwordDestinate32+#13#10+'16: ' + passwordDestinate16);

MyMD5.Free;
end;

end.</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>  二、<strong>DES加密算法</strong></p>
<p>  DES的加密、解密封库单元</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif">&nbsp;<span class="cnblogs_code_collapse">View Code</span></div>
<p>  调用方法,加密:</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img alt="复制代码" data-src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre>var
PlaintextStr:string;
begin
PlaintextStr:='加密测试!';
PublicCiphertextStr:=EncryStrHex(PlaintextStr, '11111111');//StandardDES.pas

showmessage(PublicCiphertextStr);
end;</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<p>  调用方法,解密:</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre>var
PlaintextStr:string;
begin
PlaintextStr:=DecryStrHex(PublicCiphertextStr, '11111111');//StandardDES.pas

showmessage(PlaintextStr);
end;</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<p>&nbsp;</p>
<p> </p>
<p>  转截自:http://www.cnblogs.com/edisonfeng/archive/2011/07/22/2054520.html</p><br><br>
来源:https://www.cnblogs.com/jackero/p/11812071.html
頁: [1]
查看完整版本: Delphi- 数据加密和解密