Directories: lib/ contains a library for Research work using Finite Automata (RFA) for: (1) pattern matching, (2) ranking / language counting for formatted encryption (3) generating random elements in a language Build instructions: cd lib make Testing: make tests The resulting library is: lib/bin/rank.a (cleaning: make cleanall) Examples: lib/test/fa/src/dfa_tests.cc shows how DFA/NFA are constructed and how pattern matching is done lib/test/fa/scripts/dfa_tests.sh testing script to invoke dfa_tests lib/test/fa_rank/src/fa_rank_tests.cc shows how ranking based on is done lib/test/fa_rank/scripts/fa_rank_tests.sh test script for fa_rank_tests examples/cfg this directory contains several examples of ranking/unranking using CFG grammars, including the examples used in (1) Daniel Luchaup, Thomas Shrimpton, Thomas Ristenpart, Somesh Jha "Formatted Encryption beyond Regular Languages" 21st ACM Conference on Computer and Communications Security (ACM CCS 2014) See end of examples/cfg/README for more info.