zoukankan      html  css  js  c++  java
  • Java 中编码与摘要算法

    URL 编码与解码

    String s = "你好,世界!";
    // URL 编码
    String urlEncodedString = URLEncoder.encode(s, "UTF-8");
    // URL 解码
    String urlDecodedString = URLDecoder.decode(urlEncodedString, "UTF-8");
    

    Base64 编码与解码

    // Base64 编码
    String base64EncodedString = Base64
            .getEncoder()
            // 去掉 Base64 后补位的 =
            .withoutPadding()
            .encodeToString("你好,世界!!".getBytes(StandardCharsets.UTF_8));
    // Base64 解码
    byte[] base64DecodedByteArray = Base64.getDecoder().decode(base64EncodedString);
    String base64DecodedString = new String(base64DecodedByteArray, StandardCharsets.UTF_8);
    

    byte[] 转 16 进制字符串

    后面摘要算法可视化结果时会用到

    /**
     * byte[] 按位转换为 16 进制 String
     * @param aData 需要转换的 byte[]
     * @return byte[] 按位转换为的 16 进制 String
     */
    public static String byteArrayToHexString(byte[] aData) {
        final char[] hexChars = "0123456789abcdef".toCharArray();
        // 一个字节用两个 16 进制字符表示
        StringBuilder stringBuilder = new StringBuilder(aData.length * 2);
        for (byte b : aData) {
            // 高 4 位转换为 16 进制
            stringBuilder.append(hexChars[(b >>> 4) & 0x0f]);
            // 低 4 位转换为 16 进制
            stringBuilder.append(hexChars[b & 0x0f]);
        }
        return stringBuilder.toString();
    }
    

    MD5 算法

    // 参数为摘要算法的名称
    MessageDigest messageDigest = MessageDigest.getInstance("MD5");
    // 以下两行代码相当于 messageDigest.update("你好,世界!".getBytes(StandardCharsets.UTF_8));
    messageDigest.update("你好,".getBytes(StandardCharsets.UTF_8));
    messageDigest.update("世界!".getBytes(StandardCharsets.UTF_8));
    byte[] md5Bytes = messageDigest.digest();
    

    SHA1 算法

    // SHA256 把算法名称换一下就行了
    MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
    // 以下两行代码相当于 messageDigest.update("你好,世界!".getBytes(StandardCharsets.UTF_8));
    messageDigest.update("你好,".getBytes(StandardCharsets.UTF_8));
    messageDigest.update("世界!".getBytes(StandardCharsets.UTF_8));
    byte[] md5Bytes = messageDigest.digest();
    
  • 相关阅读:
    PHP 大小写转换、首字母大写、每个单词首字母大写转换相关函数
    【论文学习4】BiSample: Bidirectional Sampling for Handling Missing Data with Local Differential Privacy
    【论文学习3】Local Differential Privacy for Deep Learning
    【论文学习2】 Differential Privacy Reinforcement Learning
    深度学习中的优化算法
    Spatial crowdsourcing
    “pip install tensorflow ”出现错误
    python或pip'不是内部或外部命令”
    pip install torch出现错误
    打不开gitHub的解决方法
  • 原文地址:https://www.cnblogs.com/seliote/p/10103948.html
Copyright © 2011-2022 走看看