MissyElliott.encode("Example") # => "\xAE\xF0\xBC\xA4\xF8\xE4\xAC"
#"Example"
#--> ["E", "x", "a", "m", "p", "l", "e"]
#--> [69, 120, 97, 109, 112, 108, 101]
#--> ["01000101", "01111000", "01100001", "01101101", "01110000", "01101100", "01100101"]
# Shift yo bits down
#--> ["10001010", "11110000", "11000010", "11011010", "11100000", "11011000", "11001010"]
# Flip it
#--> ["01110101", "00001111", "00111101", "00100101", "00011111", "00100111", "00110101"]
# And reverse it
#--> ["10101110", "11110000", "10111100", "10100100", "11111000", "11100100", "10101100"]
#--> [174, 240, 188, 164, 248, 228, 172]
#--> ["\xAE", "\xF0", "\xBC", "\xA4", "\xF8", "\xE4", "\xAC"]
#--> "\xAE\xF0\xBC\xA4\xF8\xE4\xAC"
MissyElliott.decode("\xAE\xF0\xBC\xA4\xF8\xE4\xAC") # => "Example"
Although MissyElliott.encode
and MissyElliott.decode
have different implentations, they are actually doing the exact same thing!
This is because the algorithm is a reciprocal cipher. See what I had to say about all this on my blog.
This gem is a blatant rip-off of an old XKCD comic:
Add this line to your application's Gemfile:
gem 'missy_elliott'
And then execute:
$ bundle
Or install it yourself as:
$ gem install missy_elliott
- Got a bug fix?
- You'd better work on it ( https://github.com/tom-lord/missy_elliott/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit it (
git commit -am 'Add some feature'
) - And converse it (
git push origin my-new-feature
)