Hacker: - You will be surprise to know that Hacker is a good person, as Hacker is someone who is able to manipulate the inner working of Computers, Information and Technology.

But because of media, name of Hacker is Spoiled

Cracker:-In security Community, a cracker is someone who breaks encryption and copy protection Schemes. They are malicious programmers.
Similarity of both is that both are very smart people who have in depth-understanding of computer systems and can accurately analyze a difficulty to solve problem.