#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
char *verschluesseln(char *s, int n);
char *entschluesseln(char *s, int n);
int main()
{
#define STR "DIESERKLARTEXTISTJETZTZUVERSCHLUESSELN"
char str[] = STR;
char *ver;
char *ent;
printf("unverschluesselt: %s\n", str
);
ver = verschluesseln(str, 3);
printf("verschluesselt: %s\n", ver
);
ent = entschluesseln(ver, 3);
printf("entschluesselt: %s\n", ent
);
return 0;
}
char *verschluesseln(char *s, int n)
{
for (i = 0; s[i] != '\0'; i++)
{
b[x*(i%n) + i / n] = s[i];
}
for (i = 0; s[i] != '\0'; i++)
{
s[i] = b[i];
}
return s;
}
char *entschluesseln(char *s, int n)
{
for (i = 0; s[i] != '\0'; i++)
{
b[i] = s[x*(i%n) + i / n];
}
for (i = 0; s[i] != '\0'; i++)
{
s[i] = b[i];
}
return s;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8YXNzZXJ0Lmg+CgpjaGFyICp2ZXJzY2hsdWVzc2VsbihjaGFyICpzLCBpbnQgbik7CmNoYXIgKmVudHNjaGx1ZXNzZWxuKGNoYXIgKnMsIGludCBuKTsKCmludCBtYWluKCkKewojZGVmaW5lIFNUUiAiRElFU0VSS0xBUlRFWFRJU1RKRVRaVFpVVkVSU0NITFVFU1NFTE4iCgogIGNoYXIgc3RyW10gPSBTVFI7CiAgY2hhciAqdmVyOwogIGNoYXIgKmVudDsKCiAgcHJpbnRmKCJ1bnZlcnNjaGx1ZXNzZWx0OiAlc1xuIiwgc3RyKTsKCiAgdmVyID0gdmVyc2NobHVlc3NlbG4oc3RyLCAzKTsKICBwcmludGYoInZlcnNjaGx1ZXNzZWx0OiAgICVzXG4iLCB2ZXIpOwoKICBlbnQgPSBlbnRzY2hsdWVzc2Vsbih2ZXIsIDMpOwogIHByaW50ZigiZW50c2NobHVlc3NlbHQ6ICAgJXNcbiIsIGVudCk7CgogIGFzc2VydChzdHJjbXAoZW50LCBTVFIpID09IDApOwoKICByZXR1cm4gMDsKfQoKY2hhciAqdmVyc2NobHVlc3NlbG4oY2hhciAqcywgaW50IG4pCnsKICBpbnQgaSwgeCA9IHN0cmxlbihzKSAvIG4gKyAoKHN0cmxlbihzKSAlIG4pID4gMCk7CiAgY2hhciAqYiA9IG1hbGxvYyhzdHJsZW4ocykpOwogIGZvciAoaSA9IDA7IHNbaV0gIT0gJ1wwJzsgaSsrKQogIHsKICAgIGJbeCooaSVuKSArIGkgLyBuXSA9IHNbaV07CiAgfQogIGZvciAoaSA9IDA7IHNbaV0gIT0gJ1wwJzsgaSsrKQogIHsKICAgIHNbaV0gPSBiW2ldOwogIH0KICBmcmVlKGIpOwogIHJldHVybiBzOwp9CgpjaGFyICplbnRzY2hsdWVzc2VsbihjaGFyICpzLCBpbnQgbikKewogIGludCBpLCB4ID0gc3RybGVuKHMpIC8gbiArICgoc3RybGVuKHMpICUgbikgPiAwKTsKICBjaGFyICpiID0gbWFsbG9jKHN0cmxlbihzKSk7CiAgZm9yIChpID0gMDsgc1tpXSAhPSAnXDAnOyBpKyspCiAgewogICAgYltpXSA9IHNbeCooaSVuKSArIGkgLyBuXTsKICB9CiAgZm9yIChpID0gMDsgc1tpXSAhPSAnXDAnOyBpKyspCiAgewogICAgc1tpXSA9IGJbaV07CiAgfQogIGZyZWUoYik7CiAgcmV0dXJuIHM7Cn0KCg==