Ruby Encryption

Ruby Encryption

Ruby built Rails and still powers plenty of APIs, DevOps glue, and internal tools. Syntax stays friendly; deployment is often “push the repo” with interpreted source on the box. Gems and DSLs make it quick to ship, which also means strings in your tree are easy to read.

SMTP passwords, payment gateway keys, and staging URLs creep into initializers more often than we admit. StringEncrypt hands you Ruby that rebuilds those literals at runtime so a quick grep or a leaked tarball hurts a bit less.

String encryption supports both UNICODE and ANSI strings.

You can read more about Ruby and Ruby strings at:

Ruby encryption (UNICODE Example)

Plaintext reference: StringEncrypt sample

# encrypted with https://www.stringencrypt.com (v1.5.0) [Ruby]
# myString = "StringEncrypt sample"
myString = [ 0xFCAD, 0x2F9E, 0x8D44, 0x995C, 0xBFFE, 0xA27C, 0xE123, 0x4BCA,
             0x12F8, 0xEEAA, 0x636C, 0xC189, 0xEC9C, 0x78D3, 0xCF36, 0xFC76,
             0x68BE, 0xA943, 0x7B93, 0x1E62 ]

myString.each_with_index do |pyhun, olagz|
  pyhun = (((pyhun & 0xFFFF) >> 8) | ((pyhun & 0xFFFF) << 8)) & 0xFFFF
  3.times do
    2.times do
      pyhun = ((pyhun & 0xFFFF) + olagz) & 0xFFFF
      3.times do
        pyhun = (((pyhun & 0xFFFF) >> (olagz % 16)) | ((pyhun & 0xFFFF) << (16 - (olagz % 16)))) & 0xFFFF
        pyhun = ((pyhun & 0xFFFF) - 1) & 0xFFFF
      end
    end
  end
  3.times do
    pyhun = (pyhun ^ (((pyhun & 0xFFFF) << 14) & 0xFFFF)) & 0xFFFF
  end
  pyhun = ((pyhun & 0xFFFF) + 0x3460) & 0xFFFF
  pyhun = (((pyhun & 0xFFFF) << (olagz % 16)) | ((pyhun & 0xFFFF) >> (16 - (olagz % 16)))) & 0xFFFF
  3.times do
    2.times do
      3.times do
        pyhun = ((pyhun & 0xFFFF) - olagz) & 0xFFFF
        pyhun = (((pyhun & 0xFFFF) >> 8) | ((pyhun & 0xFFFF) << 8)) & 0xFFFF
      end
    end
    4.times do
      4.times do
        pyhun = (((pyhun & 0xFFFF) << (olagz % 16)) | ((pyhun & 0xFFFF) >> (16 - (olagz % 16)))) & 0xFFFF
        pyhun = ((pyhun & 0xFFFF) - 1) & 0xFFFF
        pyhun = ((pyhun & 0xFFFF) - 0xB997) & 0xFFFF
      end
      pyhun = (pyhun ^ ((pyhun & 0xFFFF) >> 13)) & 0xFFFF
      pyhun = ((pyhun & 0xFFFF) - 0x507C) & 0xFFFF
    end
  end
  3.times do
    pyhun = ((pyhun & 0xFFFF) - olagz) & 0xFFFF
  end
  pyhun = ((pyhun & 0xFFFF) - 0x0F91) & 0xFFFF
  pyhun = ((pyhun & 0xFFFF) + olagz) & 0xFFFF
  3.times do
    pyhun = (pyhun ^ (((pyhun & 0xFFFF) << 14) & 0xFFFF)) & 0xFFFF
  end
  myString[olagz] = pyhun & 0xFFFF
end
myString = myString.pack('v*').force_encoding('UTF-16LE').encode('UTF-8')

Ruby encryption (ANSI Example)

Plaintext reference: StringEncrypt sample

# encrypted with https://www.stringencrypt.com (v1.5.0) [Ruby]
# myString = "StringEncrypt sample"
myString = "\x14\x3B\x04\xF9\x86\xAD\x50\x15\x76\xA9\x5A\x93\x24\xAF\x68\xE5" \
           "\x9B\x41\x43\xD6"

myString.bytes.each_with_index do |viaih, xeipv|
  viaih = ((viaih & 0xFF) + 0xB9) & 0xFF
  3.times do
    viaih = (((viaih & 0xFF) >> 5) | ((viaih & 0xFF) << 3)) & 0xFF
    viaih = (viaih ^ ((viaih & 0xFF) >> 4)) & 0xFF
    viaih = ((viaih & 0xFF) + 0xAD) & 0xFF
  end
  viaih = (viaih ^ ((viaih & 0xFF) >> 5)) & 0xFF
  viaih = (viaih ^ 0x7F) & 0xFF
  4.times do
    2.times do
      viaih = (((viaih & 0xFF) << 1) | ((viaih & 0xFF) >> 7)) & 0xFF
    end
  end
  viaih = ((viaih & 0xFF) - 1) & 0xFF
  viaih = (((viaih & 0xFF) >> 4) | ((viaih & 0xFF) << 4)) & 0xFF
  viaih = (((viaih & 0xFF) >> 4) | ((viaih & 0xFF) << 4)) & 0xFF
  3.times do
    4.times do
      viaih = ((viaih & 0xFF) + xeipv) & 0xFF
      4.times do
        viaih = (((viaih & 0xFF) >> 4) | ((viaih & 0xFF) << 4)) & 0xFF
        viaih = ((viaih & 0xFF) - 0xC0) & 0xFF
        viaih = ((viaih & 0xFF) + xeipv) & 0xFF
      end
      viaih = (viaih ^ 0xB5) & 0xFF
    end
  end
  myString.setbyte(xeipv, viaih & 0xFF)
end