Advertisement
Jessehz

charcoal.rb

Aug 31st, 2012
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.62 KB | None | 0 0
  1. # Copyright 2012 Jesse Zilstorff
  2.  
  3. module Charcoal
  4.     def self.encrypt(stream, key)
  5.         last = key.first
  6.         stream.bytes.with_index.map do |byte, index|
  7.             key.unshift(last = index ^ key.pop ^ last)
  8.             byte ^ last
  9.         end.pack("C*")
  10.     end
  11.     def self.encrypt_blocks(instream, outstream, key)
  12.         buffer = ""
  13.         blksize = instream.stat.blksize
  14.         while instream.read(blksize, buffer)
  15.             outstream.write(encrypt(buffer, key))
  16.         end
  17.     end
  18. end
  19.  
  20. Charcoal.encrypt_blocks(
  21.     File.new(ARGV.first),
  22.     File.new(ARGV.last, IO::CREAT|IO::WRONLY),
  23.     "AS<k-_5\y[K`,~aqQrm~8{rI#lw=T|DI".bytes.to_a
  24.     #"rLUQk!uiq5)<4d|7ZURd9k6H~(Mxtd1@".bytes.to_a
  25. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement