Hash Functions and Types of Hash functions