#include <stdio.h>
#include <stdlib.h>
void encrypt(char *cleartext, char *chiffre, int keyOffset) {
while (keyOffset > 25) {
keyOffset = keyOffset - 26;
}
for (int i = 0; cleartext[i] != '\0'; i++) {
if (cleartext[i] > 64 && cleartext[i] < 91) {
chiffre[i] = cleartext[i] + keyOffset;
if (chiffre[i] > 90) {
chiffre[i] = chiffre[i] - 26;
}
} else {
if (cleartext[i] > 96 && cleartext[i] < 123) {
chiffre[i] = cleartext[i] + keyOffset;
if (chiffre[i] > 123) {
chiffre[i] = chiffre[i] - 26;
}
} else chiffre[i] = cleartext[i];
}
}
printf("%s", chiffre
); // drückt den Wert von chiffre aus. }
void decrypt(char *chiffre, char *cleartext, int keyOffset) {
//TODO:implement decryption algorithmus for your symmetric cypher
while (keyOffset > 25) {
keyOffset = keyOffset - 26;
}
for (int i = 0; chiffre[i] != '\0'; i++) {
if (chiffre[i] > 64 && chiffre[i] < 91) {
chiffre[i] = chiffre[i] + keyOffset;
if (chiffre[i] > 90) {
chiffre[i] = chiffre[i] + 26;
}
} else {
if (chiffre[i] > 96 && chiffre[i] < 123) {
chiffre[i] = chiffre[i] + keyOffset;
if (chiffre[i] > 123) {
chiffre[i] = chiffre[i] + 26;
}
} else chiffre[i] = cleartext[i];
}
}
}
int main() {
//TODO: test
char buffer[15];
encrypt("Hello Mr. X!", buffer, 3);
decrypt("Khoor Pu. A!", buffer, 3);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnZvaWQgZW5jcnlwdChjaGFyICpjbGVhcnRleHQsIGNoYXIgKmNoaWZmcmUsIGludCBrZXlPZmZzZXQpIHsKICAgIHdoaWxlIChrZXlPZmZzZXQgPiAyNSkgewogICAgICAgIGtleU9mZnNldCA9IGtleU9mZnNldCAtIDI2OwogICAgfQoKCiAgICBmb3IgKGludCBpID0gMDsgY2xlYXJ0ZXh0W2ldICE9ICdcMCc7IGkrKykgewogICAgICAgIGlmIChjbGVhcnRleHRbaV0gPiA2NCAmJiBjbGVhcnRleHRbaV0gPCA5MSkgewogICAgICAgICAgICBjaGlmZnJlW2ldID0gY2xlYXJ0ZXh0W2ldICsga2V5T2Zmc2V0OwogICAgICAgICAgICBpZiAoY2hpZmZyZVtpXSA+IDkwKSB7CiAgICAgICAgICAgICAgICBjaGlmZnJlW2ldID0gY2hpZmZyZVtpXSAtIDI2OwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGNsZWFydGV4dFtpXSA+IDk2ICYmIGNsZWFydGV4dFtpXSA8IDEyMykgewogICAgICAgICAgICAgICAgY2hpZmZyZVtpXSA9IGNsZWFydGV4dFtpXSArIGtleU9mZnNldDsKICAgICAgICAgICAgICAgIGlmIChjaGlmZnJlW2ldID4gMTIzKSB7CiAgICAgICAgICAgICAgICAgICAgY2hpZmZyZVtpXSA9IGNoaWZmcmVbaV0gLSAyNjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGNoaWZmcmVbaV0gPSBjbGVhcnRleHRbaV07CiAgICAgICAgfQogICAgfQogICAgcHJpbnRmKCIlcyIsIGNoaWZmcmUpOyAvLyBkcsO8Y2t0IGRlbiBXZXJ0IHZvbiBjaGlmZnJlIGF1cy4KfQoKCnZvaWQgZGVjcnlwdChjaGFyICpjaGlmZnJlLCBjaGFyICpjbGVhcnRleHQsIGludCBrZXlPZmZzZXQpIHsKICAgIC8vVE9ETzppbXBsZW1lbnQgZGVjcnlwdGlvbiBhbGdvcml0aG11cyBmb3IgeW91ciBzeW1tZXRyaWMgY3lwaGVyCgogICAgd2hpbGUgKGtleU9mZnNldCA+IDI1KSB7CiAgICAgICAga2V5T2Zmc2V0ID0ga2V5T2Zmc2V0IC0gMjY7CiAgICB9CgoKICAgIGZvciAoaW50IGkgPSAwOyBjaGlmZnJlW2ldICE9ICdcMCc7IGkrKykgewogICAgICAgIGlmIChjaGlmZnJlW2ldID4gNjQgJiYgY2hpZmZyZVtpXSA8IDkxKSB7CiAgICAgICAgICAgIGNoaWZmcmVbaV0gPSBjaGlmZnJlW2ldICsga2V5T2Zmc2V0OwogICAgICAgICAgICBpZiAoY2hpZmZyZVtpXSA+IDkwKSB7CiAgICAgICAgICAgICAgICBjaGlmZnJlW2ldID0gY2hpZmZyZVtpXSArIDI2OwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGNoaWZmcmVbaV0gPiA5NiAmJiBjaGlmZnJlW2ldIDwgMTIzKSB7CiAgICAgICAgICAgICAgICBjaGlmZnJlW2ldID0gY2hpZmZyZVtpXSArIGtleU9mZnNldDsKICAgICAgICAgICAgICAgIGlmIChjaGlmZnJlW2ldID4gMTIzKSB7CiAgICAgICAgICAgICAgICAgICAgY2hpZmZyZVtpXSA9IGNoaWZmcmVbaV0gKyAyNjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGNoaWZmcmVbaV0gPSBjbGVhcnRleHRbaV07CiAgICAgICAgfQogICAgfQogICAgcHJpbnRmKCIlcyIsIGNsZWFydGV4dCk7Cgp9CgppbnQgbWFpbigpIHsKICAgIC8vVE9ETzogdGVzdAogICAgY2hhciBidWZmZXJbMTVdOwogICAgZW5jcnlwdCgiSGVsbG8gTXIuIFghIiwgYnVmZmVyLCAzKTsKICAgIGRlY3J5cHQoIktob29yIFB1LiBBISIsIGJ1ZmZlciwgMyk7CiAgICByZXR1cm4gMDsKfQo=