0

I am using a java class CryptoSHA1BASE64.java to encrypt a plain text to sha1Base64 key

String result = CryptoSHA1BASE64.hash(text);

The code of the class - CryptoSHA1BASE64.java is

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import javax.servlet.ServletException;

public final class CryptoSHA1BASE64 {
  public static String hash(String plaintext) throws ServletException {
    MessageDigest md = null;

    try {
      md = MessageDigest.getInstance("SHA"); // SHA-1 generator instance
    } catch (NoSuchAlgorithmException e) {
      throw new ServletException(e.getMessage());
    }

    try {
      md.update(plaintext.getBytes("UTF-8")); // Message summary
      // generation
    } catch (UnsupportedEncodingException e) {
      throw new ServletException(e.getMessage());
    }

    byte raw[] = md.digest(); // Message summary reception
    try {
      String hash = new String(org.apache.commons.codec.binary.Base64.encodeBase64(raw), "UTF-8");
      return hash;
    } catch (UnsupportedEncodingException use) {
      throw new ServletException(use);
    }
  }
}

I want to decrypt the generated key back to plain text, i tried same approach i.e., the decrypt method of apache commons -

Base64.decodeBase64(key)

But, I gest some weird character instead of plain text. Any suggestions/comments would be of great help. Thanks!!!

Sangram Anand
  • 10,526
  • 23
  • 70
  • 103

1 Answers1

2

Hashing algorithms are one way. You can't undigest the string to get the original text. That is why these algorithms are used for passwords before they are stored in a database for example, so that even if the database is hacked, you can't get the original text.

ezzadeen
  • 1,033
  • 10
  • 9