mirror of
https://bitbucket.org/Mattrixwv/cipherstream.git
synced 2025-12-06 18:33:58 -05:00
75 lines
1.6 KiB
C++
75 lines
1.6 KiB
C++
//Ciphers/SourceFiles/Atbash.cpp
|
|
//Matthew Ellison
|
|
// Created: 4-30-18
|
|
//Modified: 4-30-18
|
|
//This file contains the implementation of the Atbash class
|
|
|
|
|
|
#include "../Headers/Atbash.hpp"
|
|
#include <cctype>
|
|
|
|
Atbash::Atbash(){
|
|
}
|
|
|
|
Atbash::~Atbash(){
|
|
}
|
|
|
|
void Atbash::setInputString(std::string input){
|
|
//Make sure inputString is empty
|
|
reset();
|
|
//Strip all punctuation and whitespace from input and make all letters capital
|
|
for(int cnt = 0;cnt < input.size();++cnt){
|
|
char letter = input[cnt];
|
|
//If it is upper case add it to the inputString
|
|
if(isupper(letter)){
|
|
inputString += letter;
|
|
}
|
|
//If it is lower case make it upper case and add it to the inputString
|
|
else if(islower(letter)){
|
|
inputString += toupper(letter);
|
|
}
|
|
//If it is anything else ignore it
|
|
}
|
|
}
|
|
|
|
std::string Atbash::getInputString() const{
|
|
return inputString;
|
|
}
|
|
|
|
std::string Atbash::getOutputString() const{
|
|
return outputString;
|
|
}
|
|
|
|
std::string Atbash::encode(){
|
|
//Step through every element in the inputString and shift it the correct amount
|
|
for(int cnt = 0;cnt < inputString.size();++cnt){
|
|
outputString += (inputString[cnt] + 25 - (2 * (inputString[cnt] - 'A')));
|
|
}
|
|
|
|
return outputString;
|
|
}
|
|
|
|
std::string Atbash::encode(std::string input){
|
|
setInputString(input);
|
|
return encode();
|
|
}
|
|
|
|
std::string Atbash::decode(){
|
|
//Make sure outputString is empty
|
|
outputString = "";
|
|
for(int cnt = 0;cnt < inputString.size();++cnt){
|
|
outputString += (inputString[cnt] + 25 - (2 * (inputString[cnt] - 'A')));
|
|
}
|
|
|
|
return outputString;
|
|
}
|
|
|
|
std::string Atbash::decode(std::string input){
|
|
setInputString(input);
|
|
return decode();
|
|
}
|
|
|
|
void Atbash::reset(){
|
|
inputString = outputString = "";
|
|
}
|