cryptographic operations as sat problems translating algorithms to propositional logic