java sha256加解密
时间: 2023-09-28 14:07:42 浏览: 115
以下是使用Java实现SHA256加密和解密的示例代码:
```java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SHA256Example {
public static void main(String[] args) {
String password = "mypassword";
String encodedPassword = sha256(password);
System.out.println("Encoded Password: " + encodedPassword);
String decodedPassword = sha256(encodedPassword);
System.out.println("Decoded Password: " + decodedPassword);
}
public static String sha256(String input) {
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
byte[] hash = messageDigest.digest(input.getBytes());
StringBuilder hexString = new StringBuilder();
for (byte b : hash) {
String hex = Integer.toHexString(0xff & b);
if (hex.length() == 1) hexString.append('0');
hexString.append(hex);
}
return hexString.toString();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
}
```
在这个示例中,我们首先定义了一个字符串变量 `password`,它代表要加密的原始密码。然后我们使用 `sha256` 方法对该密码进行加密,并将结果存储在 `encodedPassword` 变量中。接着,我们再次使用 `sha256` 方法解密 `encodedPassword`,并将结果存储在 `decodedPassword` 变量中。
`sha256` 方法使用Java的 `MessageDigest` 类来计算SHA-256哈希值。该方法接受一个字符串参数 `input`,将其转换为字节数组,通过调用 `digest` 方法来计算哈希值,并将结果转换为十六进制字符串返回。如果在计算哈希值时出现异常,则抛出 `RuntimeException` 异常。
注意,SHA256是一种单向哈希函数,因此无法对哈希值进行解密。在示例中,我们只是将哈希值再次传递给 `sha256` 方法来演示这一点。
阅读全文