def xor(a, b)
a.zip(b).map{|x, y| x ^ y}
end
def random_bytes(size)
size.times.map{rand(0..255)}
end
def str(bs)
bs.pack("C*")
end
# Source text
src = "I ♥ Ruby"
# Get source byte array
bs = src.bytes
# Get length of bytes
size = bs.size
# Generate random bytes
r1 = random_bytes(size)
# XOR r1 and bytes
r2 = xor(r1, bs)
# Decrypt
d1 = xor(r1, r2)
puts str(d1)
ZGVmIHhvcihhLCBiKQogIGEuemlwKGIpLm1hcHt8eCwgeXwgeCBeIHl9CmVuZAoKZGVmIHJhbmRvbV9ieXRlcyhzaXplKQogIHNpemUudGltZXMubWFwe3JhbmQoMC4uMjU1KX0KZW5kCgpkZWYgc3RyKGJzKQogIGJzLnBhY2soIkMqIikKZW5kCgojIFNvdXJjZSB0ZXh0CnNyYyA9ICJJIOKZpSBSdWJ5IgojIEdldCBzb3VyY2UgYnl0ZSBhcnJheQpicyAgID0gc3JjLmJ5dGVzCiMgR2V0IGxlbmd0aCBvZiBieXRlcwpzaXplID0gYnMuc2l6ZQojIEdlbmVyYXRlIHJhbmRvbSBieXRlcwpyMSA9IHJhbmRvbV9ieXRlcyhzaXplKQojIFhPUiByMSBhbmQgYnl0ZXMKcjIgPSB4b3IocjEsIGJzKQoKIyBEZWNyeXB0CmQxID0geG9yKHIxLCByMikKcHV0cyBzdHIoZDEpCg==