Java 使用apache commons解码Base64

Java 使用apache commons解码Base64,java,encryption,base64,decode,Java,Encryption,Base64,Decode,我使用java类CryptoSHA1BASE64.java将纯文本加密为sha1Base64密钥 字符串结果=CryptoSHA1BASE64.hash(文本) 类CryptoSHA1BASE64.java的代码是 import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import javax.

我使用java类CryptoSHA1BASE64.java将纯文本加密为sha1Base64密钥

字符串结果=CryptoSHA1BASE64.hash(文本)

类CryptoSHA1BASE64.java的代码是

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);
    }
  }
}
我想将生成的密钥解密回纯文本,我尝试了相同的方法,即apache commons的解密方法-

Base64.decodeBase64(键)


但是,我用了一些奇怪的字符而不是纯文本。任何建议/意见都会大有帮助。谢谢

散列算法是一种方法。您无法取消对字符串的消化以获取原始文本。这就是为什么这些算法在存储到数据库之前用于密码的原因,例如,即使数据库被黑客攻击,也无法获得原始文本。

由于某些限制,编码部分无法更改,因此寻找解码UTF-8编码(可能重复)的解决方案是不可能的。有关答案,请参见@ezzadeen。