Link to home
Start Free TrialLog in
Avatar of engayman01
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.
Avatar of Lukasz Zielinski
Lukasz Zielinski
Flag of Poland image

Avatar of engayman01
engayman01

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'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 ;)
If i have a key 'c03de8d73d1c03de8d73d1c03de8d73d1' and i want to use it in your procedure as
EncryptAESStreamECB( Source, 0, 'c03de8d73d1c03de8d73d1c03de8d73d1', Dest );
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.Create(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(dest.size);

  dest.Free;
  source.Free;
end;

function AES_decrypt(data, key: string): string;
var key128:TAESKey128;
    count:integer;
    source, dest:TStringStream;
begin
  source:=TStringStream.Create(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.Position, key128, dest);

  dest.Size:=count;
  dest.Position:=0;
  result:=dest.ReadString(dest.size);

  dest.Free;
  source.Free;
end;

the above code was adapted from the demo in the zip I gave you.
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
Is there a way to convert the string into array of bytes?
Thanks.
ASKER CERTIFIED SOLUTION
Avatar of 2266180
2266180
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
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 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.
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.