Substitution Cipher Implementation - File Encryption/Decryption



Task

Encrypt a input/source file by replacing every upper/lower case alphabets of the source file with another predetermined upper/lower case alphabets or symbols and save it into another output/encrypted file and then again convert that output/encrypted file into original/decrypted file.

This type of Encryption/Decryption scheme is often called a Substitution Cipher.



Related tasks

 Caesar cipher
 Rot-13
 Vigenère Cipher/Cryptanalysis


See also

 Wikipedia: Substitution cipher


module SubstitutionCiphers
 
using Compat
 
const key = "]kYV}(!7P\$n5_0i R:?jOWtF/=-pe'AD&@r6%ZXs\"v*N[#wSl9zq2^+g;LoB`aGh{3.HIu4fbK)mU8|dMET><,Qc\\C1yxJ"
 
function encode(s::AbstractString)
    buf = IOBuffer()
    for c in s
        print(buf, key[Int(c) - 31])
    end
    return String(take!(buf))
end
 
function decode(s::AbstractString)
    buf = IOBuffer()
    for c in s
        print(buf, Char(findfirst(==(c), key) + 31))
    end
    return String(take!(buf))
end
 
end  # module SubstitutionCiphers