SHA-1 Hash

Last Updated : 29 Apr, 2026

SHA-1 (Secure Hash Algorithm 1) is a cryptographic hashing algorithm that generates a fixed 160-bit hash value from input data, mainly used to verify data integrity. It is now considered insecure due to vulnerabilities and has been replaced by stronger hashing standards.

  • Produces a 160-bit (40-character hexadecimal) hash output
  • Developed by the U.S. National Security Agency (NSA)
  • Formerly used as a Federal Information Processing Standard (FIPS)
  • Broken by collision attacks, making it unsafe for modern security use
  • Declared insecure since 2005; major companies stopped support by 2017
SHA_1_Algorithm_Block_Diagram
SHA-1 Hash

Working of SHA-1

The block diagram of the SHA-1 algorithm. Here’s a detailed description of each component and process in the diagram:

Process Flow

  • Message (M): The original input data that needs to be hashed.
  • Message Padding: The message is padded so its length becomes 448 modulo 512, making it ready for block processing.
  • Word Computation: The padded message is divided into 512-bit blocks, each split into 16 words, which are then expanded into 80 words.
  • Initialization: Five working variables A, B, C, D, and E are initialized with predefined constant values.
  • Round Constants: Four constants (K1 to K4) are used across different round ranges (0–19, 20–39, 40–59, 60–79).
  • 80 Rounds Processing: The algorithm performs 80 iterations, applying logical operations and transformations on A–E using the expanded words and constants.
  • Final Addition: The results of the rounds are added to the initial values of A–E to form the intermediate hash.
  • Message Digest (MPX): All values are combined to produce the final 160-bit hash output.

Cryptographic Hash Functions in Java

In Java, cryptographic hash values are generated using the MessageDigest class from the java.security package.

  • Supported Algorithms: Java supports multiple hashing algorithms, including MD2, MD5, SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512.

Execution Process

  • Select algorithm using MessageDigest.getInstance()
  • Input data is processed into a byte array
  • Byte array is converted using BigInteger
  • Final output is displayed as a hexadecimal string

Example Inputs and Outputs

  • Input: hello world
  • Output: 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
  • Input: GeeksForGeeks
  • Output: addf120b430021c36c232c99ef8d926aea2acd6b

Example Implementations

Example 1: Implementation of SHA-1 in Java

Java
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class GFG {
    public static String encryptThisString(String input) {
        try {
            // getInstance() method is called with algorithm SHA-1
            MessageDigest md = MessageDigest.getInstance("SHA-1");

            // digest() method is called
            // to calculate message digest of the input string
            // returned as array of byte
            byte[] messageDigest = md.digest(input.getBytes());

            // Convert byte array into signum representation
            BigInteger no = new BigInteger(1, messageDigest);

            // Convert message digest into hex value
            String hashtext = no.toString(16);

            // Add preceding 0s to make it 40 digits long
            while (hashtext.length() < 40) {
                hashtext = "0" + hashtext;
            }

            // return the HashText
            return hashtext;
        }

        // For specifying wrong message digest algorithms
        catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }

    // Driver code
    public static void main(String args[]) throws NoSuchAlgorithmException {
        System.out.println("HashCode Generated by SHA-1 for:");

        String s1 = "GeeksForGeeks";
        System.out.println("\n" + s1 + " : " + encryptThisString(s1));

        String s2 = "hello world";
        System.out.println("\n" + s2 + " : " + encryptThisString(s2));
    }
}

Output
HashCode Generated by SHA-1 for:

GeeksForGeeks : addf120b430021c36c232c99ef8d926aea2acd6b

hello world : 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

Example 2: Implementation of SHA-1 in PHP

PHP
<?php
    echo "HashCode Generated by SHA-1 for:"; 
    echo ("<br>");
    $myString = "hello world";
    echo $myString." : ";
    echo sha1($myString);
    echo ("<br>");
    $myString2 = "GeeksForGeeks";
    echo $myString2." : ";
    echo sha1($myString2);
?>

Output:

HashCode Generated by SHA-1 for:
hello world : 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
GeeksForGeeks : addf120b430021c36c232c99ef8d926aea2acd6b

Example 3: Implementation of SHA-1 in JavaScript

HTML
<!DOCTYPE html>
<html>
<head>
    <title>sha1 Hash function</title>
    <script src=
"https://cdnjs.cloudflare.com/ajax/libs/js-sha1/0.6.0/sha1.min.js">
    
    </script>
</head>
<body>
    <h1>GeeksforGeeks</h1>
 
    <h2>JavaScript sha1 Hash function</h2>
   
    <p id="pId"></p>
    <p id="pId2"></p>
 
    <!-- Script to return math property values -->
    <script>       
        var myString = "hello world";
        var text = sha1(myString); 
        document.getElementById("pId").innerHTML = myString + " : " + text;
        var myString2 = "GeeksForGeeks";
        var text2 = sha1(myString2); 
        document.getElementById("pId2").innerHTML = myString2 + " : " + text2;            
    </script>
</body>
</html>

Output:

GeeksforGeeks
JavaScript sha1 Hash function
hello world : 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
GeeksForGeeks : addf120b430021c36c232c99ef8d926aea2acd6b

Applications of SHA-1

SHA-1 is widely used in various domains to ensure data security, integrity, and authenticity.

  • Cryptography: Generates a fixed, irreversible hash to verify data authenticity during transmission.
  • Data Integrity: Detects any data modification by comparing original and current hash values.
  • Digital Signatures: Ensures authenticity by hashing data and encrypting it with a private key.
  • Digital Forensics: Verifies that digital evidence has not been altered during investigation.
  • Password Storage: Stores passwords securely as hash values instead of plain text.
  • Software Updates: Confirms file integrity by matching downloaded file hash with the original.