New AES gem available -- fast-aes

N

Nate Wiger

I've just released a new AES gem for Ruby, written in C for speed.
This gem leverages some open source AES C code that has been in use
for many years. I created this gem because other AES implementations
didn't even run, or were buggy, or performed poorly, or all of the
above.

To install:

gem install fast-aes

Usage is very easy and docs are available here:

http://github.com/nateware/fast-aes

Enjoy,

Nate Wiger
 
P

Pål Bergström

Nate said:
I've just released a new AES gem for Ruby, written in C for speed.
This gem leverages some open source AES C code that has been in use

Great. Hopefully what I've been looking for.

I've been using Encryptor.encrypt:)value => string , :key => key,
:algorithm => 'aes-128-cbc') in a module created on my own. Is your gem
faster?

I should add that I don't fully understand this thing with encryption
and the terminology. Could you explain a bit the key length and 128 bit?
Is it always the length as in your example?
 
J

Josh Cheek

2010/7/1 P=E5l Bergstr=F6m said:
I should add that I don't fully understand this thing with encryption
and the terminology. Could you explain a bit the key length and 128 bit?
Is it always the length as in your example?
Empirically yes:

require 'rubygems'
require 'fast-aes'
require 'pp'

key , results =3D String.new , Array.new

for char in [*'a'..'z'] + [*'A'..'H']
results << begin
FastAES.new key and "Valid: #{key}"
rescue =3D> error
error
end
key << char
end

pp results




Definitively (fast_aes.c), still yes:

key_bits =3D strlen(key_data)*8;
switch(key_bits)
{
case 128:
case 192:
case 256:
fast_aes->key_bits =3D key_bits;
memcpy(fast_aes->key, key_data, key_bits/8);
/*printf("AES key=3D%s, bits=3D%d\n", fast_aes->key,
fast_aes->key_bits);*/
break;
default:
sprintf(error_mesg, "AES key must be 128, 192, or 256 bits in lengt=
h
(got %d): %s", key_bits, key_data);
rb_raise(rb_eArgError, error_mesg);
return Qnil;
}
 
P

Pål Bergström

Josh Cheek wrote:

Definitively (fast_aes.c), still yes:

And for saving it in mysql, how do I translate it from binary (?)
"garbage" characters (is that how you explain it) to a string? I use
Base64.b64encode(fast_aes_string) now. Is there a faster way?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top