请问一下有什么能在delphi2009下用的加密解密的控件或算法接口什么的? 以前用的AES在delphi 2009里不能用了. 谢谢.
时间:2009-01-24
来源:互联网
以前用的AES的算法接口在delphi 2009里不能用了. 似乎是字符串长度的改变不兼容delphi 2009了.
http://download.csdn.net/source/142372
请问一下有什么能在delphi 2009下正常使用的加密解密算法吗? 非常感谢.
谢谢.
作者: bitbugs 发布时间: 2009-01-24
作者: codegame 发布时间: 2009-01-24
注意 : delphi2007 String ==> delphi2009 AnsiString
delphi2007 char 一个字节 ==> 2009 二个字节
作者: starluck 发布时间: 2009-01-24
作者: gyk120 发布时间: 2009-01-26
作者: bitbugs 发布时间: 2009-01-26
我测试发现的问题
ELAES单元中
在以下过程中Tstream中发生了d7和d2009中不一致得情况。
tempout ==》TAESBuffer = array [0..15] of byte;
procedure EncryptAESStreamECB(Source: TStream; Count: cardinal;
const ExpandedKey: TAESExpandedKey192; Dest: TStream);
var
TempIn, TempOut: TAESBuffer;
Done: cardinal;
begin
if Count = 0 then
begin
Source.Position := 0;
Count := Source.Size;
end
else Count := Min(Count, Source.Size - Source.Position);
if Count = 0 then exit;
while Count >= SizeOf(TAESBuffer) do
begin
Done := Source.Read(TempIn, SizeOf(TempIn));
if Done < SizeOf(TempIn) then
raise EStreamError.Create(SReadError);
EncryptAES(TempIn, ExpandedKey, TempOut);
==========================================================
这里发生了变化不知为什么,d7和d2009中 tempout和sizeof(tempout)一致
但dest却不一致了
Done := Dest.Write(TempOut, SizeOf(TempOut));
===============================================================
if Done < SizeOf(TempOut) then
raise EStreamError.Create(SWriteError);
Dec(Count, SizeOf(TAESBuffer));
end;
if Count > 0 then
begin
Done := Source.Read(TempIn, Count);
if Done < Count then
raise EStreamError.Create(SReadError);
FillChar(TempIn[Count], SizeOf(TempIn) - Count, 0);
EncryptAES(TempIn, ExpandedKey, TempOut);
======================================================
这里也是
Done := Dest.Write(TempOut, SizeOf(TempOut));
======================================================
if Done < SizeOf(TempOut) then
raise EStreamError.Create(SWriteError);
end;
end;
作者: chenday 发布时间: 2009-02-08
作者: user139 发布时间: 2009-02-13
我已经改好了,方法就是在dest.write那里直接写入HEX码,而不是TempOut,需要用另外一个buffer.
user139:能将你改写的程序给我吗?谢谢!(1#sctc.cc请将#改为@)
作者: liaobo 发布时间: 2009-02-20
我按user139的方法弄了下搞定。
d7到d2009对应的 string=ansistring pchar=ansichar
procedure EncryptAESStreamECB(Source: TStream; Count: cardinal;
const ExpandedKey: TAESExpandedKey128; Dest: TStream);
var
TempIn, TempOut: TAESBuffer;
Done: cardinal;
ss:AnsiString;
i,j:Integer;
begin
ss:='';
if Count = 0 then
begin
Source.Position := 0;
Count := Source.Size;
end
else Count := Min(Count, Source.Size - Source.Position);
if Count = 0 then exit;
while Count >= SizeOf(TAESBuffer) do
begin
Done := Source.Read(TempIn, SizeOf(TempIn));
if Done < SizeOf(TempIn) then
raise EStreamError.Create(SReadError);
EncryptAES(TempIn, ExpandedKey, TempOut);
for I := 0 to 15 do
begin
ss:=ss+ IntToHex( tempout[i],2);
end;
Done := dest.Write(tempout, SizeOf(tempout));
if Done < SizeOf(tempout) then
raise EStreamError.Create(SWriteError);
Dec(Count, SizeOf(TAESBuffer));
end;
if Count > 0 then
begin
Done := Source.Read(TempIn, Count);
if Done < Count then
raise EStreamError.Create(SReadError);
FillChar(TempIn[Count], SizeOf(TempIn) - Count, 0);
EncryptAES(TempIn, ExpandedKey, TempOut);
for j := 0 to 15 do
begin
ss:=ss+ IntToHex( tempout[j],2);
end;
Done := dest.Write(Tempout, SizeOf(tempout));
if Done < SizeOf(TempOut) then
raise EStreamError.Create(SWriteError);
end;
Dest.Free;
Dest:= TStringStream.Create(ss);
end;
作者: chenday 发布时间: 2009-03-06
作者: lingyin55 发布时间: 2009-03-07
作者: olivemfc 发布时间: 2009-03-07
作者: liaobo 发布时间: 2009-03-09
用我的方法彻底解决这个问题.而且不需要改动人家的单元,那个AES加密单元ElAES.pas设计很精良,不需要改动.
直接到csdn搜"AES,delphi2009",可以下载我的源代码
http://download.csdn.net/source/1333382
作者: i8013 发布时间: 2009-05-21
作者: illiperson 发布时间: 2009-11-24
i8013 您好,我是台湾的网友, 请教您 有关您 PO 的 AES.PAS 加密问题
原文 :
http://download.csdn.net/source/1333382
在 2011 XE 中,编译可以通过,但是 以下字符串,加密后,再解密后就不是原来的字符串了
测试字符串如下 : delphi 煊堃 , 解密后 : Delphi ??
煊堃 是 UNICODE 字体
应该是 UNICODE 的字符串问题,不改 Aes.pas 的程序,可以吗 ?
您的范例用的是 GB 码, 印象中 GB 码也是 UNICODE 的一种
为何您的范例可以,我输入的就不行 ??
感谢您
作者: drops711 发布时间: 2011-08-09
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28