Jeg ved ikke om nogen kan bruge det til noget, men jeg har lavet et lille Ruby script til at kryptere tekst med. Det er brugt i den lille udfordring jeg havde lagt i følgende tråd:
Uofficiel udfordring
#!/usr/bin/env ruby
###############################################################################
## Rail Fence Cipher Tool - For underholdningens skyld.
## Fil: railfence.rb
## Rail Fence Cipher er en simpel Transposition cipher,
## hvilket betyder bogstaverne beholder deres værdi,
## men er rykket rundt i zigzag.
## Denne kryptering er også kendt under navnet Zigzag Cipher.
## Denne version danner kun to rails og er meget simpel.
###############################################################################
# Input: SOMETEXT
# $buffirst: S M T X
# $bufsecond: O E E T
# Output: SMTXOEET ($buffirst += $bufsecond)
# Globale variabler
$buffirst = "" # Buffer til rail 1
$bufsecond = "" # Buffer til rail 2
# Funktioner
def usage() # Helpscreen
puts "Rail Fence Cipher Tool v0.1"
puts "USAGE: ./railfence.rb [filename]"
end
def encrypt(filename) # Krypteringsfunktion
File.open(filename, 'r') do |file| # Åbn filen angivet i ARGV til læsning
_shifter = 1 # Sæt shifter til 1. Vi bruger denne til at skifte mellem de to rails, ved at teste om den er lige eller ulige
file.each_char do |char| # Læs filen en byte ad gangen
# Dette tilføjer et tegn til buffirst, derefter buffsecond, derefter buffirst, derefter bufsecond osv., baseret på om shifter er lige eller ulige
if (_shifter.odd?) then $buffirst = "#{$buffirst}#{char.to_s}" else $bufsecond = "#{$bufsecond}#{char.to_s}" end # Skiftevis gem et tegn fra filen i buffirst og bufsecond
_shifter += 1 # Tæl shifter 1 op. Det vil få den til at skifte mellem lige og ulige hele tiden
end
end # Dette laver en file.close automatisk. Det sker ved at filen åbnes som en del af en block i Ruby
end
# Main
if ARGV.size != 1 then # Kontroller af der er angivet et argument. Det skal være et filnavn, ellers går scriptet ned.
usage() # Udskriv helpscreen hvis der ikke er givet præcis et argument til scriptet
else
encrypt(ARGV[0]) # Scritet har modtaget et argument. Kald encrypt() med filnavnet som argument
end
puts "#{$buffirst.strip.upcase}#{$bufsecond.strip.upcase}" # Skriv de to rails til stdout som store bogstaver
Citer:root@master:~/code/ruby/railfence# ./railfence.rb
Rail Fence Cipher Tool v0.1
USAGE: ./railfence.rb [filename]
root@master:~/code/ruby/railfence# ./railfence.rb testfile.txt
N ADRIK RNGNUFRRNE,HRJGLVTE IL RPEIGOGV.DTHNLRO ALFNETASOIINCPE.HPYHCIGUD E KEE OE DODIGR A E AE NLLEKYTRNSPAE E ADE MRI EC RNPSTO IHR AP AKN.
root@master:~/code/ruby/railfence#
God fornøjelse.