Java数据加密(MD5,sha1,sha256)

来源:互联网 发布:centos 输入法切换 编辑:程序博客网 时间:2024/06/10 01:05

数据加密,是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文。它的核心是密码学。数据加密目前仍是计算机系统对信息进行保护的一种最可靠的办法。它利用密码技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用。
以下是对数据加密的几种方法 MD5,sha1,sha256;
import java.io.UnsupportedEncodingException;    import java.security.MessageDigest;    import java.security.NoSuchAlgorithmException;    import java.util.Scanner;    import org.apache.commons.codec.binary.Hex;/** * 常見的几种加密方式 */public class Encrypt {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String next = sc.next(); //123String md5str = string2MD5(next);   //202CB962AC59075B964B07152D234B70String sha1str = string2Sha1(next);   //40bd001563085fc35165329ea1ff5c5ecbdbbeefString sha256str = String2SHA256(next); //a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3String sha256Javastr = String2SHA256StrJava(next);    //a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3System.out.println("next");System.out.println("md5str:"+md5str);System.out.println("sha1str:"+sha1str);System.out.println("sha256str:"+sha256str);System.out.println("sha256Javastr:"+sha256Javastr);}    /**     * MD5加密 生成32位md5码     */    public static String string2MD5(String inStr){        MessageDigest md5 = null;        try{            md5 = MessageDigest.getInstance("MD5");        }catch (Exception e){            System.out.println(e.toString());            e.printStackTrace();            return "";        }        char[] charArray = inStr.toCharArray();        byte[] byteArray = new byte[charArray.length];        for (int i = 0; i < charArray.length; i++)            byteArray[i] = (byte) charArray[i];        byte[] md5Bytes = md5.digest(byteArray);        StringBuffer hexValue = new StringBuffer();        for (int i = 0; i < md5Bytes.length; i++){            int val = ((int) md5Bytes[i]) & 0xff;            if (val < 16)                hexValue.append("0");            hexValue.append(Integer.toHexString(val));        }        return hexValue.toString().toUpperCase();    }    /**     * SHA1加密      * @param str     * @return     */    public static String string2Sha1(String str){        if(str==null||str.length()==0){            return null;        }        char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9',                'a','b','c','d','e','f'};        try {            MessageDigest mdTemp = MessageDigest.getInstance("SHA1");            mdTemp.update(str.getBytes("UTF-8"));            byte[] md = mdTemp.digest();            int j = md.length;            char buf[] = new char[j*2];            int k = 0;            for (int i = 0; i < j; i++) {                byte byte0 = md[i];                buf[k++] = hexDigits[byte0 >>> 4 & 0xf];                buf[k++] = hexDigits[byte0 & 0xf];                  }            return new String(buf);        } catch (Exception e) {            // TODO: handle exception            return null;        }    }    /**     *  利用Apache的工具类实现SHA-256加密     *  所需jar包下載 http://pan.baidu.com/s/1nuKxYGh     * @param str 加密后的报文     * @return     */    public static String String2SHA256(String str){        MessageDigest messageDigest;        String encdeStr = "";        try {            messageDigest = MessageDigest.getInstance("SHA-256");            byte[] hash = messageDigest.digest(str.getBytes("UTF-8"));            encdeStr = Hex.encodeHexString(hash);        } catch (NoSuchAlgorithmException e) {            e.printStackTrace();        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }        return encdeStr;    }    //---------    /**     * 利用java原生的摘要实现SHA256加密     * @param str 加密后的报文     * @return     */    public static String String2SHA256StrJava(String str){        MessageDigest messageDigest;        String encodeStr = "";        try {            messageDigest = MessageDigest.getInstance("SHA-256");            messageDigest.update(str.getBytes("UTF-8"));            encodeStr = byte2Hex(messageDigest.digest());        } catch (NoSuchAlgorithmException e) {            e.printStackTrace();        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }        return encodeStr;    }    /**     * 将byte转为16进制     * @param bytes     * @return     */    private static String byte2Hex(byte[] bytes){        StringBuffer stringBuffer = new StringBuffer();        String temp = null;        for (int i=0;i<bytes.length;i++){            temp = Integer.toHexString(bytes[i] & 0xFF);            if (temp.length()==1){                //1得到一位的进行补0操作                stringBuffer.append("0");            }            stringBuffer.append(temp);        }        return stringBuffer.toString();    }}


原创粉丝点击