Source: https://my.eng.utah.edu/~nmcdonal/Tutorials/EncryptionResearchReview.pdf