By definition, a Virus is something which can self-replicate itself into multiple hosts. A computer virus could spread by floppy discs, USB drives, emails or any other communication protocol available which can send data from one computer to another. Viruses are usually stealthy, hidden inside other legitimate applications or documents and don't destroy data or incapacitate the affected computer immediately after infection. Instead they use that time to infect other computers around them. Trojans, on the other hand are defined as something which impersonates as something else to fool the user. The key difference between a Trojan and a Virus is that while viruses hide inside a legitimate document or application, a Trojan impersonates as a legitimate document or application itself and usually doesn't do anything useful. The second significant difference is that while most Viruses spread automatically without any human intervention, Trojans usually require human interaction to infect the computer. E-mail based Viruses which infect a user's computer only after the user opens them are actually Trojans.