📜  java sha-256加密解密示例——Java(1)

📅  最后修改于: 2023-12-03 14:42:16.087000             🧑  作者: Mango

Java SHA-256加密解密示例

SHA-256是一种安全散列算法,常用于加密和验证数据的完整性。在Java中使用SHA-256进行加密和解密操作非常简单,本文将演示SHA-256加密解密的示例。

1. 加密操作示例

首先,我们需要使用java.security.MessageDigest类来创建一个SHA-256消息摘要对象。然后可以使用该对象将数据加密为SHA-256码。

以下是SHA-256加密示例的代码片段:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class SHA256Utils {
    public static String getSHA256(String data) throws NoSuchAlgorithmException {
        MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
        messageDigest.update(data.getBytes());
        byte[] hash = messageDigest.digest();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < hash.length; i++) {
            String hex = Integer.toHexString(0xff & hash[i]);
            if (hex.length() == 1) {
                sb.append('0');
            }
            sb.append(hex);
        }
        return sb.toString();
    }
}

以上示例代码使用了 getSHA256() 方法来加密传入的数据。该方法输入为需要加密的数据,输出为加密后的SHA-256码。先使用 MessageDigest.getInstance("SHA-256")方法创建一个SHA-256消息摘要对象,然后使用 update() 方法传入需要加密的数据,并调用 digest() 获取加密后的结果。

2. 解密操作示例

由于SHA-256是一种单向散列算法,因此在Java中无法直接进行解密操作。要验证数据的完整性,可以重新对原始数据进行SHA-256加密,然后将加密前后的SHA-256码进行比较。

以下是SHA-256解密示例的代码片段:

public class SHA256Utils {
    public static boolean validateSHA256(String data, String hash) throws NoSuchAlgorithmException {
        String calculatedHash = getSHA256(data);
        return calculatedHash.equals(hash);
    }
}

以上示例代码使用 validateSHA256() 方法来验证数据的完整性。该方法输入为原始数据和SHA-256码,输出为布尔值。先调用 getSHA256() 方法获取原始数据的SHA-256码,然后使用 equals() 方法将计算出的SHA-256码和输入的SHA-256码进行比较。如果两个SHA-256码相等,则数据没有被篡改过,反之则可能被篡改过。

3. 总结

在Java中使用SHA-256进行加密和解密操作非常简单。使用 java.security.MessageDigest类来创建一个SHA-256消息摘要对象,然后可以使用该对象将数据加密为SHA-256码。要验证数据的完整性,可以重新对原始数据进行SHA-256加密,然后将加密前后的SHA-256码进行比较。SHA-256算法具有强大的安全性和完整性验证功能,适用于密码等敏感数据的加密和验证处理。