MD5算法转换成SHA256算法(java示例)


标签:MD5, SHA256

众所周知,MD5算法已经是不安全的算法。但目前现有的代码中很多都是MD5算法,怎样从MD5算法迁移到推荐到SHA256算法呢?以下是MD5代码示例:

import java.math.BigInteger;
import java.security.MessageDigest;

public class MD5Example {

    public static void main(String[] args) {
        String input = "Hello World!";
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] messageDigest = md.digest(input.getBytes());
            BigInteger number = new BigInteger(1, messageDigest);
            String md5 = number.toString(16);
            while (md5.length() < 32) {
                md5 = "0" + md5;
            }
            System.out.println("MD5 Hash of \"" + input + "\" is: " + md5);
        } catch (Exception e) {
            System.out.println("Exception: " + e);
        }
    }
}



以下是SHA256代码示例:

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

public class SHA256Example {
    public static void main(String[] args) {
        String input = "hello world";
        try {
            MessageDigest digest = MessageDigest.getInstance("SHA-256");
            byte[] hash = digest.digest(input.getBytes());
            StringBuffer hexString = new StringBuffer();
            for (int i = 0; i < hash.length; i++) {
                String hex = Integer.toHexString(0xff & hash[i]);
                if (hex.length() == 1) hexString.append('0');
                hexString.append(hex);
            }
            System.out.println("SHA-256 hash of \"" + input + "\" is: " + hexString.toString());
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
}

输出结果:

SHA-256 hash of “hello world” is: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

做下代码替换,可以迅速的将MD5算法切换成SHA256算法!



问:SHA256算法简介,是安全的算法吗?

SHA-256是一种哈希函数,它将任意长度的消息作为输入,并生成256位(32字节)的哈希值作为输出。SHA-256是SHA算法族中的一员,由美国国家安全局(NSA)开发,目前被广泛应用于数字签名、数据完整性校验等领域。
SHA-256算法在安全性方面是比较可靠的。它具有以下几个特点:
1.输出固定长度:SHA-256算法的输出长度是固定的256位,无论输入长度有多长,输出长度都是一样的;
2.不可逆性:SHA-256算法是一种单向哈希函数,输入消息是不可逆转成哈希值的;
3.抗碰撞性:SHA-256算法的哈希值具有较高的抗碰撞性,即不同的输入消息计算出相同的哈希值的概率极低,难以被攻击者利用;
4.抗修改性:SHA-256算法的哈希值在输入消息发生任何改变时都会发生变化,这使得攻击者无法篡改消息而不被检测出来。
总的来说,SHA-256算法是一种相对安全的哈希算法。但是,随着计算能力的提高和攻击手段的增加,SHA-256算法的安全性也可能会被破解。因此,在实际应用中,为了更好地保障数据的安全性,通常会将SHA-256算法与其他加密措施(如RSA、AES等)一起使用。



作者简介:https://shimo.im/docs/rp3OVwxle2fJn7Am/
上海徐汇
2023年6月9日


你可能感兴趣的:(java,开发语言,哈希算法,SHA256算法,MD5)