engayman01
asked on
Help with AES!!!
Hi,
I want a component (better if was open source or free) that do the AES encryption.
Besat Regards.
I want a component (better if was open source or free) that do the AES encryption.
Besat Regards.
or the long dissapeared aldos implementation: http://www.ciuly.com/delphi/basicSecurity/cryptography/aes/index.html
ASKER
For ciuly,
I want to use the same key for another application, is there a way to use a hex key?
ie : i want your methods for decrypt and encrypt to take a hex key and i parse it as a string.
Regards.
I want to use the same key for another application, is there a way to use a hex key?
ie : i want your methods for decrypt and encrypt to take a hex key and i parse it as a string.
Regards.
I'm not sure I understand your question. a hex key, like 0e3a579bc ? if so, that is just a subset of the possible key characters so of course it can be done. but since you are saying hex .. I am thinking maybe you want to do something else, so better just give a clear example ;)
ASKER
If i have a key 'c03de8d73d1c03de8d73d1c03 de8d73d1' and i want to use it in your procedure as
EncryptAESStreamECB( Source, 0, 'c03de8d73d1c03de8d73d1c03 de8d73d1', Dest );
How i can do it??
Regards.
EncryptAESStreamECB( Source, 0, 'c03de8d73d1c03de8d73d1c03
How i can do it??
Regards.
you actually need to put the key in a (for example) TAESKey128 like:
var key128:TAESKey128;
begin
FillChar(Key128, SizeOf(Key128), 0);
Move(PChar(key)^, Key128, Min(SizeOf(Key128), Length(key)));
EncryptAESStreamECB(source , 0, key128, dest);
end;
dest will hold the crypted data.
to crypt/decrypt a string and return a (binary) sting, use the following functions:
function AES_crypt(data, key: string): string;
var key128:TAESKey128;
count:integer;
source, dest:TStringStream;
begin
source:=TStringStream.Crea te(data);
dest:=TStringStream.Create ('');
source.WriteString(data);
source.Position:=0;
count:=source.Size;
dest.Write(count, sizeof(count));
FillChar(Key128, SizeOf(Key128), 0);
Move(PChar(key)^, Key128, Min(SizeOf(Key128), Length(key)));
EncryptAESStreamECB(source , 0, key128, dest);
dest.Position:=0;
result:=dest.ReadString(de st.size);
dest.Free;
source.Free;
end;
function AES_decrypt(data, key: string): string;
var key128:TAESKey128;
count:integer;
source, dest:TStringStream;
begin
source:=TStringStream.Crea te(data);
dest:=TStringStream.Create ('');
source.Position:=0;
source.ReadBuffer(count, sizeof(count));
FillChar(Key128, SizeOf(Key128), 0);
Move(PChar(key)^, Key128, Min(SizeOf(Key128), Length(key)));
DecryptAESStreamECB(source , Source.Size-source.Positio n, key128, dest);
dest.Size:=count;
dest.Position:=0;
result:=dest.ReadString(de st.size);
dest.Free;
source.Free;
end;
the above code was adapted from the demo in the zip I gave you.
var key128:TAESKey128;
begin
FillChar(Key128, SizeOf(Key128), 0);
Move(PChar(key)^, Key128, Min(SizeOf(Key128), Length(key)));
EncryptAESStreamECB(source
end;
dest will hold the crypted data.
to crypt/decrypt a string and return a (binary) sting, use the following functions:
function AES_crypt(data, key: string): string;
var key128:TAESKey128;
count:integer;
source, dest:TStringStream;
begin
source:=TStringStream.Crea
dest:=TStringStream.Create
source.WriteString(data);
source.Position:=0;
count:=source.Size;
dest.Write(count, sizeof(count));
FillChar(Key128, SizeOf(Key128), 0);
Move(PChar(key)^, Key128, Min(SizeOf(Key128), Length(key)));
EncryptAESStreamECB(source
dest.Position:=0;
result:=dest.ReadString(de
dest.Free;
source.Free;
end;
function AES_decrypt(data, key: string): string;
var key128:TAESKey128;
count:integer;
source, dest:TStringStream;
begin
source:=TStringStream.Crea
dest:=TStringStream.Create
source.Position:=0;
source.ReadBuffer(count, sizeof(count));
FillChar(Key128, SizeOf(Key128), 0);
Move(PChar(key)^, Key128, Min(SizeOf(Key128), Length(key)));
DecryptAESStreamECB(source
dest.Size:=count;
dest.Position:=0;
result:=dest.ReadString(de
dest.Free;
source.Free;
end;
the above code was adapted from the demo in the zip I gave you.
ASKER
I use it but the cipher output is differ from my another application that use AES with the same key!!
My another application implemented in java and use a standard AES from SUN.
What do you think the problem is??
Regards
My another application implemented in java and use a standard AES from SUN.
What do you think the problem is??
Regards
ASKER
Is there a way to convert the string into array of bytes?
Thanks.
Thanks.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
why a B grade? I do not agree with this resolution. I have given you a good solution but you didn't give me enough information so that I can help you.
I'd like you to reconsider.
I'd like you to reconsider.
ASKER
I give you a B grade because i use an AES algorithm standard from SUN 128 bit but the it different from your work as i was explain so my problem doesn't solved
your problem is not solved because you failed to communicate with me that information. I asked you questions and you didn't answer. it is not my fault that you didn't asnwer so that I can help.
If we cannot get to an agreement, I am in favour of getting a moderator to assist on the issue.
If we cannot get to an agreement, I am in favour of getting a moderator to assist on the issue.
Here is how things *should work* on EE:
Any expert MUST have the chance to earn an A grade. Just because you are the one that did not give sufficient information or asked for clarifications, that is not a reason to give a B grade. I asked a lot of questions and you did not even bother to reply to them. It is your fault that you did not get a good enough answer, not mine.
Hence, you are the 7th person to make it on my blacklist. Which basically means that from now on and forever I will ignore your every question.
If you treat other experts like this, that follow a similar policy as myself, you will soon find yourself with little or no experts to answer your questions.
This is just a notice. No need to reply as I unsubscribed from this question.
Enjoy.
Any expert MUST have the chance to earn an A grade. Just because you are the one that did not give sufficient information or asked for clarifications, that is not a reason to give a B grade. I asked a lot of questions and you did not even bother to reply to them. It is your fault that you did not get a good enough answer, not mine.
Hence, you are the 7th person to make it on my blacklist. Which basically means that from now on and forever I will ignore your every question.
If you treat other experts like this, that follow a similar policy as myself, you will soon find yourself with little or no experts to answer your questions.
This is just a notice. No need to reply as I unsubscribed from this question.
Enjoy.
ziolko.