How to Use Cryptographic hashes Using Python


Python Secret #Author: ManishHacker1

Hello everyone, Today we will be going to learn about Cryptographic Hashes and message digest.

What is hash Function?

A cryptographic hash function is a function which takes an input or message and convert it to a fixed-size alphanumeric bit string.The output string is called the 'hash value', 'hash code', 'message digest', 'digital fingerprint', 'digest' or 'checksum').

It is a one way hash function. It means if "f" is a hashing function and we convert in to F(x) is very fast and easy. But if you want to obtain again "x" value, It will take many years.

Now suppose you want to hash the string "ManishHacker1" with the md5 Function, the result is f9dece57a97af246e7132b02d5c76d77

Uses of Hash Function

One use is a data structure called a hash table, widely used in computer software for rapid data lookup.

  • One use is a data structure called a hash table
  • Cryptographic Algorithm
  • Database lookup by detecting duplicated records in a large file.For example is finding similar stretches in DNA sequences.
  • In digital signatures
  • Fingerprints
  • Password Storage
  • Message authentication code
  • Checksums

and many more.

How to use Hash function using Python.

In python contain a hashlib module which is provide some most popular hashes algorithm. Today we will be learn, how to use hashes algorithm with the help of hashlib module.
Hashlib module is “backed” by OpenSSL, all of of the algorithms provided by that library are available, including:

  • md5
  • sha1
  • sha224
  • sha256
  • sha384
  • sha512

Uses md5:


import hashlib
key = raw_input('Enter String to hash: ')
# Assumes the default UTF-8
hash_value = hashlib.md5(key.encode())
print "MD5 hash value: ",hash_value.hexdigest()

The above example calculate the md5 and prints the HEX digest of that string. If you want to sequence of byte then we should be use digest instead.

Uses SHA1:


import hashlib
key = hashlib.sha1(b'ManishHacker1')
hash_value = key.hexdigest()
print "sha1 hash value: ",hash_value

In above code we used 'b' string because this converts the string to bytes.the Hashing function only takes a sequence of bytes as a parameter.

Uses SHA224:


import hashlib
key = hashlib.sha224(b'ManishHacker1')
hesh_value = key.hexdigest()
print "sha224 hash value: ",hash_value

Uses SHA256:


import hashlib
key = hashlib.sha256(b'ManishHacker1')
hash_value = key.hexdigest()
print "sha256 hash value: ",hash_value

Uses SHA384:


import hashlib
key = hashlib.sha384(b'ManishHacker1')
hash_value = key.hexdigest()
print "sha384 hash value: ",hash_value

Uses SHA512:


import hashlib
key = hashlib.sha512(b'ManishHacker1')
hash_value = key.hexdigest()
print "sha512 hash value: ",hash_value

Using update function:


import hashlib

lorem = '''Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.'''

The above sample data save as hashlib_data.py in same directory where our md5.py are exist. After that calculate MD5 digest:


import hashlib

from hashlib_data import lorem

hash = hashlib.md5()
hash.update(lorem)
print hash.hexdigest()

Practicle Example


import hashlib
import uuid
 
def hash_password(password):
    # uuid is used to generate a random number
    random_no = uuid.uuid4().hex
    return hashlib.md5(random_no.encode() + password.encode()).hexdigest() + ':' + random_no
    
def check_password(hash_password, user_password):
    password, random_no = hash_password.split(':')
    return password == hashlib.md5(random_no.encode() + user_password.encode()).hexdigest()
 
new_pass = raw_input('Please enter a password: ')
hash_password = hash_password(new_pass)
print('The string to store in the database is: ' + hash_password)
old_pass = raw_input('Now please enter the password again to check: ')
if check_password(hash_password, old_pass):
    print('You entered the right password')
else:
    print('Your password is does not match.')

In the above example we are hashing the password and store in our database. uuid used for generate random number sequence added to the password before using the hash function.
The above example prevent the rainbow table attack and dictionary attacks.You can used above example to real world application if you are using user and password utility.

If you want to read full article about secure password please refer to link:


Secure Password

Thank You for reading this article. And also like my FB page given below link and share it.

Best Python Training and Ethical Hacking Training in Meerut, Noida , Delhi.

Follow ManishHacker1

Comments

Popular posts from this blog

How to create Folder Lock with Password Protected using Python

TOP 10 ANIMATED BATCH FILE PROGRAM

How to Connect Window Machine to Linux Machine Using Python via SSH