MD5消息摘要算法学习-Java调用MD

时间:2024-10-19 08:05:10

我用Android写了一个按钮,按钮的功能是对一个指定的字符串生成其MAC(消息认证码),利用Toast把消息验证码输出。

        Button Java_md5 = findViewById(R.id.java_md5);
        Java_md5.setOnClickListener(new View.OnClickListener() {
            @RequiresApi(api = Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
            @Override
            public void onClick(View v) {
                try {
                    MessageDigest md = MessageDigest.getInstance("MD5");
                    byte[] digest = md.digest("Bileton".getBytes());
                    String md5 = bytesToHex(digest);
                    Toast.makeText(MainActivity.this,md5,Toast.LENGTH_SHORT).show();
                } catch (NoSuchAlgorithmException e) {
                    throw new RuntimeException(e);
                }
            }
        });

字节数组转换为字符串

    public String bytesToHex(byte[] data){
        final char[] HEX_DIGITS = "0123456789abcdef".toCharArray();

        char[] result = new char[data.length*2];
        int c = 0;
        for(byte b:data){
            result[c++] = HEX_DIGITS[ (b>>4) & 0xf];  //保留高位
            result[c++] = HEX_DIGITS[b & 0xf];        //保留低位
        }
        return new String(result);
    }

效果如下
在这里插入图片描述