Shellsec

Fuld version: Ruby Rail Fence Cipher kode
Du ser lige nu en skrabet udgave af vores indhold. Se den fulde version med ordentlig formatering.
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.