Cryptography has taken its roots since ages and has been evolving with each generation. From early day crypto-systems which were based on substitutions, to modern day elliptic-curve based systems, cryptography has come a long way. Generally, cryptographic systems are non-mutable in nature. This means that once the cryptographic data is generated, then in order to get perfect re-construction, we must not change it. This has been a major challenge with software-security-architects. Because, this immutability renders the data non-shareable. For instance, if Amazon wants to perform some complex computations on some confidential data, then the encryption and decryption keys for that data had to be shared with the analysis team. This team, would first decrypt the data, perform the computations, and then encrypt it back and send it over to Amazon. Which lead to chances of a major security breach from the analysis team. In order to avoid such breaches, homo-morphic systems were designed. Using homo-morphic encryption, security-engineers can encrypt data, and allow third parties to perform all kind of computational analysis on that data. Once the computations are done, then security-engineers decrypt the data, and obtain the same computations reflected on the original data. In this paper, we analyse various homo-morphic crypto-systems, and compare their performances in order to find which systems are best suited for what kind of applications. We also evaluate these systems, to find out certain advantages and drawbacks of these systems and provide in-depth analytical conclusions about them. This paper concludes with some interesting observations about the said algorithms, and also proposes ways to improve them.