Hash Algorithm
Hash function, or hash algorithm, is a method creating digital finger print from any kind of data. Hash function compresses message or data into a digested version to shrink the data into a fixed data size. This function disorganizes and remixes data, rebuilding a data fingerprint as a hash value. Hash value is always represented by a short string consisting of random letters and digits.
Two different hash functions are used widely in the NEO system: SHA256 and RIPEMD160. The former is used to generate a longer hash value (32 bytes) and the latter is used to generate a shorter hash value (20 bytes). Usually when a hash value of an object is generated, hash functions are used twice. For example, when a hash of a block or transaction is generated, SHA256 is calculated twice; when a contract address is generated, the SHA256 hash of the script is calculated, then the NSPEMD160 hash of the previous hash is calculated.
In addition, the block will also use a hash structure called a Merkle Tree. It computes the hash of each transaction and combines one with the next and then hashes again, repeating this process until there is only one root hash (Merkle Root).
RIPEMD160
RIPEMD is a cryptographic hash function published by Hans Dobbertin, Antoon Bosselaers Bart Prenee from COSIC research team, University of Leuven in 1996.
RIPEMD160 is a 160bit improvement based on RIPEMD. This algorithm produces a 160bit hash, which can be presented in hexadecimal format. One feature of this algorithm is avalanche effect, i.e. any slight changes can result in a totally different hash value.
NEO generates 160bit hash of contract script with RIPEMD160.
Example:
String value  Hash value 

hello world  98c615784ccb5fe5936fbc0cbe9dfdb408d92f0f 
Scenarios：
To generate contract hash.
SHA256
SHA256 is a kind of SHA2 algorithm. SHA2 is a cryptographic hash function algorithm standard produced by NSA. It belongs to SHA family. It is a successor of SHA1. SHA2 has 6 different algorithm standards, including SHA224, SHA256, SHA384, SHA512, SHA512/224 and SHA512/256.
For any length of message, SHA256 will generate a 256bit hash value (can be represented by a hexdecimal string)
Example:
String value  Hash value 

Hello World  a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e 
Scenarios:

Compute contract hash.

Signing & Signature validation.

Base58Check encoding / decoding.

db3、NEP6 wallet secret key storage, export & validation.
Murmur3
Murmur is kind of noncryptographic hash algorithm and suits for general hash indexing. It is proposed by Austin Appleby in 2008. Later several derived versions are released. Compared with other popular hash functions, Murmur's random distribution performance is better for keys with high regularity.
Features：

Low collision probability.

Fast computing rate.

Good peformance for large files.
Example:
String  Hash value 

Hello World  ce837619 
Scenarios：

Bloom filter

leveldb storage
Scrypt
Scrypt is a kind of securecryptographic algorithm based on PBKDF2HMACSHA256 algorithm. It's developed by Colin Percival, a famous FreeBSD hacker, for his backup service Tarsnap. The original design was to reduce CPU load, minimize CPU reliance, and use CPU idle time for calculations. Therefore, scrypt not only takes a long time to calculate, but also consumes a lot of memory, making it difficult to calculate multiple digests in parallel. So it is more difficult to use the rainbow table for bruteforceattacks.
NEO mainly uses Scrypt algorithm to generate encrypted secret keys complying with NEP2 standard. Parameters are defined as follows:

N: CPU/RAM cost. Generally it is a power of 2. Default value is 16384.

p: Parallelization parameter, a positive integer that ranges from 1 to 255. Bigger value represents a heavier reliance upon concurrent computation. Default value is 8.

r: Block size，theoretically ranges from 1 to 255. Bigger value represents a heavier reliance upon RAM & bandwidth. Default value is 8.
Example:
Data  Parameters  Hash value 

Hello World  key:"I love code" N:16384 p:8 r:8  17b94895fab004e035b3630a718b498f6 647458351f04b84b4a2c0bf1db963630fa 7bfd1c29663c7bf3556fd7ba6131e5ddfd6 40b9f6a2a9ad75d3d59b65f932 
The hash value above is in single line.
Scenarios：

NEP2 format secret key export.

Password verification for NEP6 wallet.
For more information, refer to https://en.wikipedia.org/wiki/Scrypt .