我用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);
}
效果如下