innocence-java
Replace text with POS equivalent text, in a reversible fashion.
.... It also relies on the sender and receiver having a shared (identical) vocabulary file.
The project contains code to test input sentences for inclusion of words in the current vocabulary, and can create entries for new words as needed.
The vocabulary has a "MD-5 hash" value to make sure that the share vocabulary file is identical for both sender and receiver.
The software also contains a "bad-words" list of words that should never be generated in the text to be sent.