Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert Encrypt code in java to Ruby

I have been trying to convert a code for encrypt in java to ruby, but I am not able to do it completely. I getting different values.

   passphrase = passphrase + STATIC_KEY;
   byte[] key = passphrase.getBytes("UTF-8");

   MessageDigest sha = MessageDigest.getInstance("SHA-1");
   key = sha.digest(key);
   key = Arrays.copyOf(key, 16);
   SecretKey secretKey = new SecretKeySpec(key, "AES");

   Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
   IvParameterSpec initialisationVector = new IvParameterSpec(
           new byte[16]);
   cipher.init(Cipher.ENCRYPT_MODE, secretKey, initialisationVector);

   byte[] encryptedData = cipher.doFinal(plainText.getBytes("UTF-8"));

   return SimpleCrypto.toHex(encryptedData);

Can anyone let me know, how this can be done in it ruby.

  unencrypted = "passphrase"
  c = OpenSSL::Cipher.new("aes-128-cbc")
  c.encrypt
  c.key = Digest::SHA1.hexdigest('secret_key')[0...32]
  e = c.update(unencrypted)
  e << c.final
  return e
like image 918
Abibullah Rahamathulah Avatar asked May 03 '26 05:05

Abibullah Rahamathulah


1 Answers

require 'openssl'

Encrypt:

unencrypted = "I am a secret!"

initialize the Cipher for encrypt

cipher = OpenSSL::Cipher::AES.new(128, :CBC)
cipher.encrypt

create the key using SHA1

key = Digest::SHA1.hexdigest('secret_key')[0...32]
cipher.key = key

create the initialisationVector with an input

iv = Digest::SHA1.hexdigest('secret_iv')[0...32]
cipher.iv = iv

or create a random initialisationVector

iv = cipher.random_iv

run the encryption

encrypted = cipher.update(unencrypted) + cipher.final

Decrypt:

initialize the Cipher for decrypt

decipher = OpenSSL::Cipher::AES.new(128, :CBC)
decipher.decrypt

load the key and initialisationVector

decipher.key = key
decipher.iv = iv

decrypt the plaintext

plain = decipher.update(encrypted) + decipher.final

Does it match?

puts unencrypted == plain #=> true

For more information look at the Ruby Docs for the Class - OpenSSL::Cipher

like image 93
blnc Avatar answered May 04 '26 18:05

blnc



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!