Solved

Help with AES!!!

Posted on 2007-03-27
13
475 Views
Last Modified: 2010-04-05
Hi,
I want a component (better if was open source or free) that do the AES encryption.
Besat Regards.
0
Comment
Question by:engayman01
  • 7
  • 5
13 Comments
 
LVL 21

Expert Comment

by:ziolko
ID: 18799193
0
 
LVL 28

Expert Comment

by:2266180
ID: 18799303
or the long dissapeared aldos implementation: http://www.ciuly.com/delphi/basicSecurity/cryptography/aes/index.html
0
 
LVL 1

Author Comment

by:engayman01
ID: 18806072
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.
0
Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

 
LVL 28

Expert Comment

by:2266180
ID: 18806081
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 ;)
0
 
LVL 1

Author Comment

by:engayman01
ID: 18806365
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.
0
 
LVL 28

Expert Comment

by:2266180
ID: 18806393
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.
0
 
LVL 1

Author Comment

by:engayman01
ID: 18806606
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
0
 
LVL 1

Author Comment

by:engayman01
ID: 18806631
Is there a way to convert the string into array of bytes?
Thanks.
0
 
LVL 28

Accepted Solution

by:
2266180 earned 50 total points
ID: 18806692
well, I gave you an example for a 128 bit key. tehre is also a 192 bit and a 256 bit key ... which one does your java program use?

easiest way of getting an array of bytes is to modify the function to return an array of bytes and read that from the stream directly.

also, since you didn't cleared up the hex part: is the hex key a binary key, displayed as hex or is it indeed a simple hex string as it is? because if teh key is a binary key, then you need to convert the hex to binary first and then use it.
0
 
LVL 28

Expert Comment

by:2266180
ID: 18953677
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.
0
 
LVL 1

Author Comment

by:engayman01
ID: 18954113
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
0
 
LVL 28

Expert Comment

by:2266180
ID: 18954624
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.
0
 
LVL 28

Expert Comment

by:2266180
ID: 20390806
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.
0

Featured Post

U.S. Department of Agriculture and Acronis Access

With the new era of mobile computing, smartphones and tablets, wireless communications and cloud services, the USDA sought to take advantage of a mobilized workforce and the blurring lines between personal and corporate computing resources.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question