菜鸟一枚,有写的不好的地方,还请各位大神指点。
android里面有自带的加密类MessageDigest,这是一个出发点,接下来就是各种调用。话不多说,上代码。
例子:
public String MD5(String s) {
//自己写的方法,传入一个字符串(一般加密就是密码加密,定义为字符串)
try {
//字符串调用转换为byte数组
byte[] aByte = s.getBytes();
//定义MessageDigest利用getInstance参数填写的是什么类型的加密,我这里写的MD5
MessageDigest aDigest = MessageDigest.getInstance("MD5");
//调用update方法,作用是刷新当前对象的摘要数据
aDigest.update(aByte);
//建立一个StringBuffer缓存字符串
StringBuffer md5=new StringBuffer();
String md5s=null;
for(int i = 0;i<aDigest.digest().length;i++)//最终完成摘要哈希的大小(digest()方法是完成摘要)
{
//保证是16进制的两位数
if(aDigest.digest()[i] & 0xFF < 0x10){
md5.append("0");
}
//每一个字节开始加密,这里的0xFF是255,这里的作用是保证这个数值是正的,toHexString是返回一个16进制数
//在StringBuffer里有append方法添加字符串
md5.append(Integer.toHexString(aDigest.digest()[i] & 0xFF));
}
//等到循环结束,也就是字节全部转换以后,则再次输出加密以后的字符串
return md5.toString();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
写一些MessageDigest的方法解释
返回 方法 作用
void reset() 重置摘要的数据,MessageDigest的对象可以再次摘要新的数据了
void update(byte[], int, int) 在字节数组指定的位置偏移多少开始更新摘要
void digest(byte[], int, int) 在字节数组指定的位置填充以完成摘要
boolean isEqual(byte[], byte[]) 对比两个字节摘要是否相等