diff --git a/README.md b/README.md index f018831..d350a21 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ Simple implementation of XOR Encryption/Decrypting in various languages, includi - [JavaScript \(Node.js Compatible\)](JavaScript/XOREncryption.js) - [Objective-C](Objective-C/main.m) - [Python](Python/XOREncryption.py) +- [Ruby](Ruby/xor.rb) - [Visual Basic.NET](VB.NET/XORCrypto.vb) This implementation goes beyond the basic single-key model to use multiple keys in a particular sequence, making it that much more difficult to brute-force. diff --git a/Ruby/xor.rb b/Ruby/xor.rb new file mode 100644 index 0000000..8fa1df3 --- /dev/null +++ b/Ruby/xor.rb @@ -0,0 +1,15 @@ +def encryptDecrypt(string) + key = ['K', 'C', 'Q'] + result = "" + codepoints = string.each_codepoint.to_a + codepoints.each_index do |i| + result += (codepoints[i] ^ key[i % key.size].ord).chr + end + result +end + +encrypted = encryptDecrypt("kylewbanks.com") +puts "Encrypted: #{encrypted}" + +decrypted = encryptDecrypt(encrypted) +puts "Decrypted: #{decrypted}"