Wednesday, July 26, 2023

Java SHA-256

 Cryptographic hash functions are mathematical operations run on digital data; by comparing the computed hash (i.e., the output produced by executing a hashing algorithm) to a known and expected hash value, a person can determine the data's integrity. For example, computing the hash of a downloaded file and comparing the result to a previously published hash result can show whether the download has been modified or tampered with. In addition, cryptographic hash functions are extremely collision-resistant; in other words, it should be extremely difficult to produce the same hash output from two different input values using a cryptographic hash function.

Secure Hash Algorithm 2 (SHA-2) is a set of cryptographic hash functions designed by the National Security Agency (NSA). It consists of six identical hashing algorithms (i.e., SHA-256SHA-512SHA-224SHA-384SHA-512/224SHA-512/256) with a variable digest size. SHA-256 is a -bit ( byte) hashing algorithm which can calculate a hash code for an input of up to  bits. It undergoes  rounds of hashing and calculates a hash code that is a -digit hexadecimal number.

Given a string, , print its SHA-256 hash value.

Input Format

A single alphanumeric string denoting .

Constraints

  • String  consists of English alphabetic letters (i.e.,  and/or decimal digits (i.e.,  through ) only.

Output Format

Print the SHA-256 encryption value of  on a new line.

Sample Input 0

HelloWorld

Sample Output 0

872e4e50ce9990d8b041330c47c9ddd11bec6b503ae9386a99da8584e9bb12c4

Sample Input 1

Javarmi123

Sample Output 1

f1d5f8d75bb55c777207c251d07d9091dc10fe7d6682db869106aacb4b7df678

SOLUTION:

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import java.math.BigInteger;
import java.nio.charset.StandardCharsets;

public class Solution {
    
    public static String getHexString(String message)
    {
        try{
            MessageDigest messageDigest=MessageDigest.getInstance("SHA-256");
            byte[] hash=messageDigest.digest(message.getBytes(StandardCharsets.UTF_8));
            BigInteger number = new BigInteger(1, hash);
            StringBuilder hexString = new StringBuilder(number.toString(16));
            while (hexString.length() < 64)
        {
            hexString.insert(0'0');
        }
 
        String Result= hexString.toString();
        
        return Result;
        }catch(NoSuchAlgorithmException e)
        {
            e.printStackTrace();
        }
        return "Result";
    }

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        String message=scanner.nextLine();
        scanner.close();
        System.out.println(getHexString(message));
    }
}

No comments:

Post a Comment

Featured Post

14. Longest Common Prefix

Popular Posts