Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ source "http://rubygems.org"
# Add dependencies to develop your gem here.
# Include everything needed to run rake, tests, features, etc.
group :development do
gem "bundler"
gem "jeweler"
gem "shoulda"
gem "bundler"
gem "jeweler"
gem "simplecov"
gem "test-unit"
end
13 changes: 6 additions & 7 deletions README.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,23 @@ Usage:

# Generate a random key
key = AES.key
=> "290c3c5d812a4ba7ce33adf09598a462"
=> "3a45d76fa5f0bd21f8dfd3f4e98fc4effe59e503857618cf58a11a31a276177b"

# Encrypt a string. Default output is base_64 encoded, init_vector and cipher_text are joined with "$"
b64 = AES.encrypt("A super secret message", key)
=> "IJjbgbv/OvPIAf4R5qAWyg==$fy0v7JwRX4kyAWflgouQlt9XGmiDKvbQMRHmQ+vy1fA="
=> "IuTX8xX2XrrTVsq6SwWtFw==$+A8IiuUgPE+nRFVinA0vd5LUInd3QM3rGViNJIq3mx4="

# Same as above but minus the base64 encoding, init_vector and cipher_text are shoved into an array
plain = AES.encrypt("A super secret message", key, {:format => :plain}) #
=> [";\202\222\306\376<\206\343\023\245\312\225\214KAm",
"C\343\023\323U~W>\023y\217\341\201\371\352\334\311^\307\352{\020 H(DVw\3224N\223"]
=> ["xF.^\x80ML'6\x10F2Z\xF8\x9Ep", "r\xA8P\xEBP\x10_\xC1\xD3B\xC3\xAB\xB3_qy\x91Q\x8C~\x1Ec\x9FD'\x8D\xB8\xBF\xB0\xA6\a\x9A"]

# Generate a random initialization vector
iv = AES.iv(:base_64)
=> "IJjbgbv/OvPIAf4R5qAWyg=="
=> "G8iY1e3Yvf6OqFAD4w2ZVw=="

# Encrypt a string, with a provided key and init_vector.
b64_iv = AES.encrypt("A super secret message", key, {:iv => iv})
=> "IJjbgbv/OvPIAf4R5qAWyg==$fy0v7JwRX4kyAWflgouQlt9XGmiDKvbQMRHmQ+vy1fA="
=> "G8iY1e3Yvf6OqFAD4w2ZVw==$B68lzBMXyOLXBSbPg4BgLBQRf68xVmS2oK4r2Xb+tXc="

AES.decrypt(b64, key)
=> "A super secret message"
Expand All @@ -40,7 +39,7 @@ Usage:
# the following example the message is exactly 16 bytes long, so no
# error aries.
msg = AES.encrypt("A secret message", key, {:padding => false})
=> "SnD+WIfEfjZRrl+WAM/9pw==$89sGGZsu973j8Gl6aXC8Uw=="
=> "3orl0zsORP06B8+eyM+XsQ==$bqsvFPjTOzccKA/N3IEnug=="

# Be sure to pass the same padding option when decrypting the
# message, as it will fail if you try to decrypt unpadded data and
Expand Down
36 changes: 18 additions & 18 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
require 'rubygems'
require 'bundler'
require "rubygems"
require "bundler"
begin
Bundler.setup(:default, :development)
rescue Bundler::BundlerError => e
$stderr.puts e.message
$stderr.puts "Run `bundle install` to install missing gems"
warn e.message
warn "Run `bundle install` to install missing gems"
exit e.status_code
end
require 'rake'
require "rake"

require 'jeweler'
require "jeweler"
Jeweler::Tasks.new do |gem|
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
gem.name = "aes"
gem.homepage = "http://github.com/chicks/aes"
gem.license = "MIT"
gem.summary = %Q{AES#encrypt(key, data), AES#decrypt(key, data). Capiche?}
gem.description = %Q{An AES encrypt/decrypt gem built ontop of OpenSSL. Not as quick as FastAES, but it doesn't require building
native extensions and supports Base64 encoded input and output.}
gem.summary = %{AES#encrypt(key, data), AES#decrypt(key, data). Capiche?}
gem.description = %(An AES encrypt/decrypt gem built ontop of OpenSSL. Not as quick as FastAES, but it doesn't require building
native extensions and supports Base64 encoded input and output.)
gem.email = "carl.hicks@gmail.com"
gem.authors = ["Carl Hicks"]
# Include your dependencies below. Runtime dependencies are required when using your gem,
Expand All @@ -27,21 +27,21 @@ Jeweler::Tasks.new do |gem|
end
Jeweler::RubygemsDotOrgTasks.new

require 'rake/testtask'
require "rake/testtask"
Rake::TestTask.new(:test) do |test|
test.libs << 'lib' << 'test'
test.pattern = 'test/**/test_*.rb'
test.libs << "lib" << "test"
test.pattern = "test/**/test_*.rb"
test.verbose = true
end

task :default => :test
task default: :test

require 'rdoc/task'
require "rdoc/task"
Rake::RDocTask.new do |rdoc|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
version = File.exist?("VERSION") ? File.read("VERSION") : ""

rdoc.rdoc_dir = 'rdoc'
rdoc.rdoc_dir = "rdoc"
rdoc.title = "aes #{version}"
rdoc.rdoc_files.include('README*')
rdoc.rdoc_files.include('lib/**/*.rb')
rdoc.rdoc_files.include("README*")
rdoc.rdoc_files.include("lib/**/*.rb")
end
31 changes: 15 additions & 16 deletions aes.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Gem::Specification.new do |s|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Carl Hicks"]
s.date = "2012-05-01"
s.description = "An AES encrypt/decrypt gem built ontop of OpenSSL. Not as quick as FastAES, but it doesn't require building\n native extensions and supports Base64 encoded input and output."
s.description = "An AES encrypt/decrypt gem built ontop of OpenSSL. Not as quick as FastAES, but it doesn't require building\n native extensions and supports Base64 encoded input and output."
s.email = "carl.hicks@gmail.com"
s.extra_rdoc_files = [
"LICENSE.txt",
Expand All @@ -35,25 +35,24 @@ Gem::Specification.new do |s|
s.rubygems_version = "1.8.12"
s.summary = "AES#encrypt(key, data), AES#decrypt(key, data). Capiche?"

if s.respond_to? :specification_version then
if s.respond_to? :specification_version
s.specification_version = 3

if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
s.add_development_dependency(%q<shoulda>, [">= 0"])
s.add_development_dependency(%q<bundler>, [">= 0"])
s.add_development_dependency(%q<jeweler>, [">= 0"])
s.add_development_dependency(%q<simplecov>, [">= 0"])
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new("1.2.0")
s.add_development_dependency("bundler", [">= 0"])
s.add_development_dependency("jeweler", [">= 0"])
s.add_development_dependency("shoulda", [">= 0"])
s.add_development_dependency("simplecov", [">= 0"])
else
s.add_dependency(%q<shoulda>, [">= 0"])
s.add_dependency(%q<bundler>, [">= 0"])
s.add_dependency(%q<jeweler>, [">= 0"])
s.add_dependency(%q<simplecov>, [">= 0"])
s.add_dependency("bundler", [">= 0"])
s.add_dependency("jeweler", [">= 0"])
s.add_dependency("shoulda", [">= 0"])
s.add_dependency("simplecov", [">= 0"])
end
else
s.add_dependency(%q<shoulda>, [">= 0"])
s.add_dependency(%q<bundler>, [">= 0"])
s.add_dependency(%q<jeweler>, [">= 0"])
s.add_dependency(%q<simplecov>, [">= 0"])
s.add_dependency("shoulda", [">= 0"])
s.add_dependency("shoulda", [">= 0"])
s.add_dependency("shoulda", [">= 0"])
s.add_dependency("simplecov", [">= 0"])
end
end

6 changes: 3 additions & 3 deletions lib/aes.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
require 'openssl'
require 'base64'
require 'aes/aes'
require "openssl"
require "base64"
require "aes/aes"
Loading