Jeśli wszystko, czego chcesz, to coś naprawdę prostego, czego przeciętny użytkownik nie zauważy, to użyj serii operatorów XOR i zmianowych.
Problem z brakiem użycia tablicy do zapisania 4 miliardów wartości INT jest taki, że potrzebna jest funkcja, która wykonuje losową mapę o wartości 1 do 1 w domenie o wartości 4 miliardów INT. Możesz mieszać kilka operatorów XOR i zmian, aby stworzyć własne, ale nie będzie to trudne do złamania. Nawet gdyby istniała dobrze znana jedna na jedną mapę, również byłaby nieskuteczna. Bez soli ktoś mógłby po prostu wygenerować prosty tęczowy stół, by go złamać.
Problem z solą w komunikacji dwukierunkowej polega na tym, że musisz ją bezpiecznie przekazać. Sole muszą być tajne, a kiedy już wiesz, jakie one są, są bezcelowe.
Jeśli chcesz skonfigurować bezpieczny kanał komunikacji, spójrz na numer Off-the-Record Messaging Protocol version 2. Daje to przykład tego, jak złożone może być szyfrowanie komunikacji. Proponuję znaleźć coś dobrze znanego, że ktoś już stworzył i przetestował. Nawet jeśli użyjesz czegoś, co ktoś inny stworzył, jeśli użyjesz go niepoprawnie, zawiedzie.
Zobacz także http://stackoverflow.com/questions/858476/12-digit-number-java-encryption-question To nie jest dokładnie to samo, ale to samo rozumowanie ma zastosowanie, aby wyjaśnić, dlaczego nie jest to bezpieczne. – erickson
erickson: "Niezabezpieczony" zależy od kontekstu. Nie ma żadnych błędów a priori w przypadku "szyfrowania" 32-bitowych znaków, o ile nie można przeprowadzić ataku z użyciem wybranego tekstu jawnego. –