欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Scala MD5加密类

程序员文章站 2024-03-19 13:09:28
...

只是简单实现,很容易**,暂时先拿来用记录下。

Scala 

object MD5 {
  def MD5Encode(input: String): String = {

    // 指定MD5加密算法
    val md5 = MessageDigest.getInstance("MD5")

    // 对输入数据进行加密,过程是先将字符串中转换成byte数组,然后进行随机哈希
    val encoded = md5.digest(input.getBytes)

    // 将加密后的每个字节转化成十六进制,一个字节8位,相当于2个16进制,不足2位的前面补0
    encoded.map("%02x".format(_)).mkString
  }

  def main(args: Array[String]): Unit = {
    println(MD5Encode("hello world"))    // 5eb63bbbe01eeed093cb22bb8f5acdc3
  }
}

Java

public class TestMD5 {

    /**
     * MD5加密
     * @param input
     * @return
     */
    public static String MD5Encode( String input) {
        try {
            // 指定MD5加密算法
            MessageDigest md5 = MessageDigest.getInstance("MD5");

            // 将字符串中转换成byte数组,并更新到MD5
            md5.update(input.getBytes());

            // 对输入数据进行随机哈希加密
            byte[] encoded = md5.digest();

            // 转换为十六进制字符串
            return getHex(encoded);

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 转换为十六进制字符串
     * 将加密后的每个字节转化成十六进制,一个字节8位,相当于2个16进制,不足2位的前面补0
     */
    private static String getHex(byte[] bytes){
        StringBuilder builder = new StringBuilder(bytes.length * 2);
        for (byte b: bytes) {
            builder.append(Integer.toHexString((b >> 4) & 0x0f));
            builder.append(Integer.toHexString(b & 0x0f ));
        }
        return builder.toString();
    }

    public static void main(String[] args) {
        System.out.println(MD5Encode("hello world"));
        // 5eb63bbbe01eeed093cb22bb8f5acdc3
    }
}