A property-based testing framework for encryption programs