1.) Как можно взять значения ASCII и смешать их вместе
Это называется шифр транспонирования , однако:
деление(chr1 + chr2) / 2 - неосуществимое предложение (необратимое, как говорит Джонатан Л.), потому что вы выбросите младший бит из chr2.Независимо от того, как вы выполняете округление, учтите, что ваше шифрование сопоставит 26 значений {'A', 'B', 'C', ... 'Z'} только с 13 (или 14).Это не биекция, вы теряете информацию.
Так что просто не делайте деление.
char transpose = whatever;
int transpose_offset = transpose-'A';
char encrypt(char in, int transpose_offset) {
return ((in-'A') + transpose_offset) % 26 + 'A';
}
(Деление на 2 эквивалентно правому дерьму >> 1. Вместочто вы можете сохранить информацию, совершая циклический сдвиг. Но в любом случае, это мало что дает вам, тривиально сломать транспозиционный шифр, табулируя его.)
3.) Как можноЯ делаю так, чтобы новый файл был задом наперед?
Легко.Либо сделайте шифрование, работающее в обратном направлении через исходный текст, и запишите его по ходу дела.Или же зашифруйте, отправив вперед, сохраните результат и запишите обратно.