Initial commit
This commit is contained in:
commit
c979478938
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
brute
|
||||
shift
|
||||
count
|
||||
vigenere
|
11
Makefile
Normal file
11
Makefile
Normal file
@ -0,0 +1,11 @@
|
||||
all: shift brute count vigenere
|
||||
shift: shift.cc
|
||||
g++ shift.cc -o shift
|
||||
brute: brute.cc
|
||||
g++ brute.cc -o brute
|
||||
count: count.cc
|
||||
g++ count.cc -o count -std=c++20
|
||||
vigenere: vigenere.cc
|
||||
g++ vigenere.cc -o vigenere
|
||||
clean:
|
||||
rm shift brute
|
27
brute.cc
Normal file
27
brute.cc
Normal file
@ -0,0 +1,27 @@
|
||||
#include <iostream>
|
||||
|
||||
void shift(char* text, int key)
|
||||
{
|
||||
std::cout << key << ": ";
|
||||
for(int i = 0; text[i] != 0; ++i)
|
||||
{
|
||||
char c = text[i]-key;
|
||||
if(c < 'a') c+=26;
|
||||
if(c > 'z') c-=26;
|
||||
std::cout << c;
|
||||
}
|
||||
std::cout << std::endl;
|
||||
}
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
if(argc < 2)
|
||||
{
|
||||
std::cout << "Usage: " << argv[0] << " <ciphertext>" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
for(int i = 1; i < 26; ++i)
|
||||
{
|
||||
shift(argv[1], i);
|
||||
}
|
||||
return 0;
|
||||
}
|
30
count.cc
Normal file
30
count.cc
Normal file
@ -0,0 +1,30 @@
|
||||
#include <map>
|
||||
#include <iostream>
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
if(argc < 2)
|
||||
{
|
||||
std::cout << "Usage: " << argv[0] << " <ciphertext>" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
char* ciphertext = argv[1];
|
||||
std::map<char, int> letters;
|
||||
|
||||
for(int i = 0; ciphertext[i] != 0; ++i)
|
||||
{
|
||||
if(letters.contains(ciphertext[i]))
|
||||
{
|
||||
letters[ciphertext[i]]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
letters[ciphertext[i]] = 1;
|
||||
}
|
||||
}
|
||||
for(auto& [key, value] : letters)
|
||||
{
|
||||
std::cout << key << ": " << value << std::endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
24
shift.cc
Normal file
24
shift.cc
Normal file
@ -0,0 +1,24 @@
|
||||
#include <iostream>
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
char* text;
|
||||
int key;
|
||||
if(argc < 3)
|
||||
{
|
||||
std::cout << "Usage: " << argv[0] << " <plain text> <key>" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
text = argv[1];
|
||||
key = atoi(argv[2]);
|
||||
|
||||
for(int i = 0; text[i] != 0; ++i)
|
||||
{
|
||||
char c = text[i]+key;
|
||||
if(c < 'a') c+=26;
|
||||
if(c > 'z') c-=26;
|
||||
std::cout << c;
|
||||
}
|
||||
std::cout << std::endl;
|
||||
return 0;
|
||||
}
|
31
vigenere.cc
Normal file
31
vigenere.cc
Normal file
@ -0,0 +1,31 @@
|
||||
#include <iostream>
|
||||
|
||||
int keyvalue(char c)
|
||||
{
|
||||
return c - 'a';
|
||||
}
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
char* text;
|
||||
char* key;
|
||||
if(argc < 3)
|
||||
{
|
||||
std::cout << "Usage: " << argv[0] << " <plain text> <key>" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
text = argv[1];
|
||||
key = argv[2];
|
||||
|
||||
int ki = 0;
|
||||
for(int pi = 0; text[pi] != 0; ++pi)
|
||||
{
|
||||
char c = text[pi] + keyvalue(key[ki]);
|
||||
if(c < 'a') c+=26;
|
||||
if(c > 'z') c-=26;
|
||||
std::cout << c;
|
||||
if(key[++ki] == 0) ki = 0;
|
||||
}
|
||||
std::cout << std::endl;
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user