fork(1) download
  1. def xor(a, b)
  2. a.zip(b).map{|x, y| x ^ y}
  3. end
  4.  
  5. def random_bytes(size)
  6. size.times.map{rand(0..255)}
  7. end
  8.  
  9. def str(bs)
  10. bs.pack("C*")
  11. end
  12.  
  13. # Source text
  14. src = "I ♥ Ruby"
  15. # Get source byte array
  16. bs = src.bytes
  17. # Get length of bytes
  18. size = bs.size
  19. # Generate random bytes
  20. r1 = random_bytes(size)
  21. # XOR r1 and bytes
  22. r2 = xor(r1, bs)
  23.  
  24. # Decrypt
  25. d1 = xor(r1, r2)
  26. puts str(d1)
  27.  
Success #stdin #stdout 0s 28216KB
stdin
Standard input is empty
stdout
I ♥ Ruby