Вы хотите использовать потоковый шифр или (если ваш сценарий использования оправдывает это) одноразовый блокнот. Одноразовые прокладки - это боль в использовании - вам нужно получить ключ к принимающей стороне как-то вне диапазона, ключ должен быть как минимум таким же длинным, как открытый текст, и существуют значительные трудности, связанные со всеми проблемами, которые возникают в случае ошибки передачи - поэтому, вероятно, лучше всего использовать потоковые шифры.
RC4 может быть подходящим алгоритмом для вас.
Есть ли какая-то особая причина, по которой вы должны использовать шифрование символов для символов? Симметричные алгоритмы, такие как AES, обычно используют блоки небольшого размера, обычно 64 бита, поэтому маловероятно, что они потребуют много места. Если вы можете использовать симметричный блочный шифр, это может упростить вам задачу.
Я не уверен, что вы подразумеваете под «ключевым» решением. Все современные алгоритмы шифрования являются ключами, но природа ключа меняется в зависимости от алгоритма. Симметричные шифры обычно имеют общий секретный ключ, асимметричные алгоритмы используют открытые / закрытые ключи. Существуют различные потоковые шифры, которые используют любой тип ключа, согласно Руководству по прикладной криптографии .
Я также немного не уверен в том, что вы подразумеваете под "угрозой безопасности потери нашего ключа, она несущественна и является приемлемым риском". Если вы потеряете свой ключ, то у вас больше не будет шифрования (по крайней мере, пока вы не поверните ключи). Если шифрование неприемлемо, то зачем вам вообще шифрование? Если достаточно просто запутать данные, тогда это совсем другая проблема.