Created
July 7, 2015 14:42
-
-
Save sbfaulkner/19e5e24080cb5040d9b2 to your computer and use it in GitHub Desktop.
crypt tests
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'rubygems' | |
require 'base64' | |
require 'encryptor' | |
require 'builder' | |
# private_key = OpenSSL::PKey::RSA.new(2048) | |
# public_key = private_key.public_key | |
# test data from TST | |
# key = Base64.decode64("NxQLMrUXaSKZYm0Ef3Ab1siRevbOxF5HLpvCKXPdZh4=") | |
# iv = Base64.decode64("mWJtBH9wG9YO4QAF5ACDEg==") | |
key = Base64.decode64("UaroOFOO0OfZWe4M94bMS4UIv97YD/+qLEfO+6vZOnI=") | |
iv = Base64.decode64("2VnuDPeGzEs+Q77CY9gufA==") | |
# encrypted_text = "rseOdNdXu1Pjyl+M21iGH4J4ozgYXvrlcyxyH7/CTNA=" | |
################################################################################ | |
# SENDER (ie. on Windows) | |
# | |
# # generate random key | |
# key = Digest::SHA1.hexdigest("secret-#{Time.now}-#{rand}") | |
# puts "--- random key ---\n#{key}\n---" | |
# puts | |
text = "testing 1 2 3" | |
# encrypt text | |
text = Encryptor.encrypt(text, :key => key, :iv => iv) | |
text = Base64.encode64(text) | |
puts "--- #{Encryptor.default_options[:algorithm]} encrypted text ---\n#{text}---" | |
puts | |
# load RSA public key | |
public_key = OpenSSL::PKey::RSA.new <<-END_PUBLIC_KEY | |
-----BEGIN RSA PUBLIC KEY----- | |
… | |
-----END RSA PUBLIC KEY----- | |
END_PUBLIC_KEY | |
# puts public_key.to_pem | |
# puts | |
# # | |
# # encoding public key as xml | |
# # | |
# class OpenSSL::BN | |
# def bytes | |
# bytes = [] | |
# (num_bytes-1).downto(0) do |index| | |
# bytes << ((self >> (index*8)).to_i & 0xFF) | |
# end | |
# bytes | |
# end | |
# | |
# def chars | |
# bytes.collect { |byte| byte.chr } | |
# end | |
# end | |
# | |
# class String | |
# def to_bn | |
# OpenSSL::BN.new(bytes.collect.inject(0) { |bn,byte| (bn << 8) + byte }.to_s) | |
# end | |
# end | |
# | |
# modulus = public_key.n | |
# puts "--- public key modulus ---\n#{modulus}\n---" | |
# puts | |
# | |
# exponent = public_key.e | |
# puts "--- public key exponent ---\n#{exponent}\n---" | |
# puts | |
# | |
# modulus = Base64.encode64(modulus.chars.join).split("\n").join | |
# exponent = Base64.encode64(exponent.chars.join).split("\n").join | |
# | |
# xml = Builder::XmlMarkup.new | |
# xml.RSAKeyValue do |key| | |
# key.Modulus modulus | |
# key.Exponent exponent | |
# end | |
# puts "--- public key as xml ---\n#{xml.target!}\n---" | |
# puts | |
# | |
# modulus = Base64.decode64(modulus).to_bn | |
# puts "--- public key modulus ---\n#{modulus}\n---" | |
# puts | |
# | |
# exponent = Base64.decode64(exponent).to_bn | |
# puts "--- public key exponent ---\n#{exponent}\n---" | |
# puts | |
# encrypt key | |
key = Base64.encode64(key) | |
key = public_key.public_encrypt(key) | |
key = Base64.encode64(key) | |
puts "--- public key encrypted key ---\n#{key}---" | |
puts | |
################################################################################ | |
# RECEIVER (ie. on Linux) | |
# | |
# load RSA private key | |
private_key = OpenSSL::PKey::RSA.new <<-END_PRIVATE_KEY | |
-----BEGIN RSA PRIVATE KEY----- | |
… | |
-----END RSA PRIVATE KEY----- | |
END_PRIVATE_KEY | |
key = Base64.decode64("UaroOFOO0OfZWe4M94bMS4UIv97YD/+qLEfO+6vZOnI=") | |
iv = Base64.decode64("2VnuDPeGzEs+Q77CY9gufA==") | |
text = "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" | |
# decrypt key | |
# key = Base64.decode64(key) | |
# key = private_key.private_decrypt(key) | |
# key = Base64.decode64(key) | |
puts "--- private key decrypted key ---\n#{Base64.encode64(key)}\n---" | |
puts | |
puts "key=#{key.inspect}" | |
puts "iv=#{iv.inspect}" | |
# decrypt text | |
text = Base64.decode64(text).decrypt(:key => key, :iv => iv) | |
puts "--- #{Encryptor.default_options[:algorithm]} decrypted text ---\n#{text}\n---" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment