标签:
如今,无论是在哪个方面,数据的安全性尤为重要。 
md5加密是一个不可逆的操作,当然,如果你对一个数据进行简单的md5加密,还是有一些网站可以根据你的密文进行解密。如若想更安全,可以对数据进行多次加密。下面我就只加密一次来说:
将数据进行md5加密
>
* @param password 要加密的密码
* @return 加密后的密文
* @throws NoSuchAlgorithmException
public static String md5Password(String password) throws NoSuchAlgorithmException{
    //获取实例:传进去的 加密方式我们要进行的是md5,所以传进去的是md5字符串
    MessageDigest degiest = MessageDigest.getInstance("md5");
    byte[] result =degiest.digest(password.getBytes());
    StringBuffer sb = new StringBuffer();
    for (byte b : result) {
        int number = b&0xff+1;
        String hex=Integer.toHexString(number);
        if (hex.length()==1) {
            sb.append("0"+hex);
        }
        else {
            sb.append(hex);
        }
    }
    return sb.toString();
}
md5还可以查询文件的特征码,网上下载一个东西的时候,有时会提供一个md5值,这有什么用的呢,主要是查看是否被人为修改过,不同的文件特征码不同。如果利用下面的代码,查询文件的特征码跟提供的md5一致,则没有被修改过的,获取拿到这个值来看你需求做其它事。下面看代码:
>
* @查询文件的特征码
* @param path 文件的路径
* @return null 查询出现异常
public static String checkMd5file(String  path){
    try {
        MessageDigest digest =MessageDigest.getInstance("md5");
        File file = new File(path);
        FileInputStream fis = new FileInputStream(file);
        int length = -1;
        byte[] buffer = new byte[1024];
        while((length = fis.read(buffer))!=-1){
            digest.update(buffer,0,length);
        }
        byte[] result = digest.digest();
        StringBuilder sb= new StringBuilder();
        for (byte b : result) {
            int number= b&0xff;
            String hex=Integer.toHexString(number);
            if (hex.length()==1) {
                sb.append("0"+hex);
            }
            else {
                sb.append(hex);
            }
        }
        return sb.toString();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;
    }
}
标签:
原文地址:http://blog.csdn.net/sinat_34396176/article/details/51352447