几种常用的加密方法

发布时间 2023-12-27 17:07:55作者: Dyaqi
public static void main(String[] args) throws Exception {
        String md5Str = encodeToMD532("hello word");
        //32位,小写
        String md532Lower = md5Str.toLowerCase();
        //32位,大写
        String md532Upper = md532Lower.toUpperCase();
        //16位,小写
        String md516Lower = md532Lower.substring(8, 24);
        //16位,大写
        String md516Upper = md532Lower.substring(8, 24).toUpperCase();
    }

    private static String encodeToMD532(String input) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] digest = md.digest(input.getBytes());
            BigInteger no = new BigInteger(1, digest);
            String hashtext = no.toString(16);
            while (hashtext.length() < 32) {
                hashtext = "0" + hashtext;
            }
            return hashtext;
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }

    private static String encodeSHA256(String msg) {
        MessageDigest md = null;
        try {
            md = MessageDigest.getInstance("SHA-256");
            byte[] digest = md.digest(msg.getBytes());
            StringBuilder hexString = new StringBuilder();
            for (byte b : digest) {
                hexString.append(String.format("%02x", b));
            }
            return hexString.toString();
        } catch (Exception e) {
            // 处理算法不可用的情况
            throw new RuntimeException(e);
        }
    }

  private static String encodeBase64(String msg) {
        return Base64.getEncoder().encodeToString(msg.getBytes());
    }