#include #include #include int main(int argc, char ** argv){ if(argc < 2){ printf("Usage: %s shift [-d]\n", argv[0]); return 1; } char decrypt = 0; if(argc > 2 && argv[2][1] == 'd') decrypt = 1; unsigned int shift = atoi(argv[1]); // actually puts the sift in an int, might break shifts >2^31 unsigned int buffer[256]; size_t len; while(len = read(0, buffer, sizeof(buffer))){ for(int i = 0; i < len/sizeof(int); i++){ if(decrypt) buffer[i] -= shift; else buffer[i] += shift; } write(1, buffer, len); } return 0; }