New AES gem available -- fast-aes

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:

GitHub - nateware/fast-aes: Simple but LOW security AES EBC implementation for Ruby

Enjoy,

Nate W.

Nate W. wrote:

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?

2010/7/1 PÃ¥l Bergström [email protected]

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 = String.new , Array.new

for char in [‘a’…‘z’] + [‘A’…‘H’]
results << begin
FastAES.new key and “Valid: #{key}”
rescue => error
error
end
key << char
end

pp results

Definitively (fast_aes.c), still yes:

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

Josh C. 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?