• java MessageDigest 实现加密算法


    MessageDigest 是 Java 中的一个类,用于实现加密算法,例如 SHA-256、SHA-512、MD5 等。它可以将任意长度的数据转换为固定长度的哈希值,通常用于密码验证、数字签名等场景。

    MessageDigest 类提供了以下常用方法:
    • getInstance(String algorithm): 根据指定的算法名称获取 MessageDigest 实例。

           用途:用于获取特定算法的 MessageDigest 实例。

    • update(byte[] input): 更新 MessageDigest 对象的输入数据。

          用途:用于将字节数组输入添加到当前的 MessageDigest 对象中。

    • update(byte input): 更新 MessageDigest 对象的输入数据。

          用途:用于将单个字节输入添加到当前的 MessageDigest 对象中。

    • digest(): 计算哈希值并返回结果。

          用途:用于计算当前 MessageDigest 对象的哈希值,并返回结果。

    • digest(byte[] input): 计算给定输入数据的哈希值。

          用途:用于计算指定字节数组的哈希值,并返回结果。

    • reset(): 重置 MessageDigest 对象,以便重新使用。

           用途:用于重置当前 MessageDigest 对象,以便重新使用。

    • getAlgorithm(): 获取当前 MessageDigest 对象使用的哈希算法名称。

           用途:用于获取当前 MessageDigest 对象使用的哈希算法的名称。
    这些方法可以根据具体需求在使用 MessageDigest 类时进行调用。

    1. try {
    2. MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
    3. Log.e(TAG, messageDigest.getAlgorithm() );
    4. } catch (NoSuchAlgorithmException e) {
    5. e.printStackTrace();
    6. }

    运行上述代码,输出结果为: SHA-1

    下面是一个使用 MessageDigest 计算 SHA-256 哈希值的示例代码:
    1. import java.security.MessageDigest;
    2. import java.security.NoSuchAlgorithmException;
    3. public class HashExample {
    4. public static void main(String[] args) throws NoSuchAlgorithmException {
    5. String input = "hello world";
    6. MessageDigest md = MessageDigest.getInstance("SHA-256");
    7. byte[] hash = md.digest(input.getBytes());
    8. System.out.println(bytesToHex(hash));
    9. }
    10. //bytesToHex 方法用于将字节数组转换为十六进制字符串。
    11. private static String bytesToHex(byte[] bytes) {
    12. StringBuilder sb = new StringBuilder();
    13. for (byte b : bytes) {
    14. sb.append(String.format("%02x", b));
    15. }
    16. return sb.toString();
    17. }
    18. }

    运行上述代码,输出结果为

    185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
    

  • 相关阅读:
    2.数据及其预处理
    Android深度性能优化-更底层、全局、多维度优化
    论文投稿指南——收藏|SCI论文投稿注意事项
    Python 工匠: 异常处理的三个好习惯
    STM32F4X之中断二
    springboot-aop-redis-lua 实现的分布式限流方案
    C++QT开发——Xml、Json解析
    SpringBoot+LayUI+MybatisPlus 前后端分离 实现排名统计功能
    ROS2的cv_bridge和opencv版本不匹配问题
    Xilinx FPGA 7系列 GTX/GTH Transceivers (5)-- Aurora 8b10b 信号传输实战--小试牛刀
  • 原文地址:https://blog.csdn.net/u010207898/article/details/134457731