歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java常用數據加密算法

Java的數據加密算法,HmacSHA1,MD5等。java自帶了加密的方法類SecretKey。

Java 8 中 HashMap 的性能提升 http://www.linuxidc.com/Linux/2014-04/100868.htm

Java 8 的 Nashorn 引擎 http://www.linuxidc.com/Linux/2014-03/98880.htm

Java 8簡明教程 http://www.linuxidc.com/Linux/2014-03/98754.htm

private static final String MAC_NAME="HmacSHA1"; 
    private static final String ENCODING="UTF-8";
/**
    *使用HMAC-SHA1簽名方法對對encryptText進行簽名
    *@paramencryptText被簽名的字符串
    *@paramencryptKey密鑰
    *@return返回被加密後的字符串
    *@throwsException
    */
    public static String HmacSHA1Encrypt(String encryptText, String encryptKey)throws Exception{
        byte[] data = encryptKey.getBytes( ENCODING );
        // 根據給定的字節數組構造一個密鑰,第二參數指定一個密鑰算法的名稱
        SecretKey secretKey = new SecretKeySpec( data, MAC_NAME );
        // 生成一個指定 Mac 算法 的 Mac 對象
        Mac mac = Mac.getInstance( MAC_NAME );
        // 用給定密鑰初始化 Mac 對象
        mac.init( secretKey );
        byte[] text = encryptText.getBytes( ENCODING );
        // 完成 Mac 操作
        byte[] digest = mac.doFinal( text );
        StringBuilder sBuilder = bytesToHexString( digest );
        return sBuilder.toString();
    }
/**
    * 使用 HMAC-SHA1 簽名方法對對e
    * @param encryptData 被簽名的字
    * @param encryptKey 密鑰
    * @return 返回被加密後的字符串
    */
    public static String hmacSHA1Encrypt( byte[] encryptData, String encryptKey ) throws Exception{
        byte[] data = encryptKey.getBytes( ENCODING );
        // 根據給定的字節數組構造一個密鑰,第二參數指定一個密鑰算法的名稱
        SecretKey secretKey = new SecretKeySpec( data, MAC_NAME );
        // 生成一個指定 Mac 算法 的 Mac 對象
        Mac mac = Mac.getInstance( MAC_NAME );
        // 用給定密鑰初始化 Mac 對象
        mac.init( secretKey );
        // 完成 Mac 操作
        byte[] digest = mac.doFinal( encryptData );
        StringBuilder sBuilder = bytesToHexString( digest );
        return sBuilder.toString();
    }
    /**
    * 轉換成Hex
    * @param bytesArray
    */
    public static StringBuilder bytesToHexString( byte[] bytesArray ){
        if ( bytesArray == null ){
            return null;
        }
        StringBuilder sBuilder = new StringBuilder();
        for ( byte b : bytesArray ){
            String hv = String.format("%02x", b);
            sBuilder.append( hv );
        }
        return sBuilder;
    }
public static String md5(String str) {
        StringBuilder sb = new StringBuilder();
        try {
            MessageDigest m = MessageDigest.getInstance("MD5");
            m.update(str.getBytes("UTF8"));
            byte bytes[] = m.digest();

            for (int i = 0; i < bytes.length; i++) {
                if ((bytes[i] & 0xff) < 0x10) {
                    sb.append("0");
                }
                sb.append(Long.toString(bytes[i] & 0xff, 16));
            }
        } catch (Exception e) {
        }
        return sb.toString();
    }
   
    public static String createSign(Map<String,String> params,String appkey) throws Exception {
        String queryString = getString(params);
        return HmacSHA1Encrypt(queryString,appkey);
    }
    //
    private static String getString(Map<String, String> params) {
        List<String> sList = new ArrayList<String>();
        for(Entry<String,String> entry:params.entrySet()){
            sList.add(entry.getKey()+"="+entry.getValue());
        }
        String queryString = Joiner.on("&").join(sList);
        return queryString;
    }
/**
    * HmacMD5算法
    * @param msg 加密信息
    * @param keyString 秘鑰
    * @return digest 結果
    */
    public static String hmacMD5(String msg, String keyString) {
        String digest = null;
        try {
            SecretKeySpec key = new SecretKeySpec((keyString).getBytes("UTF-8"), "HmacMD5");
            Mac mac = Mac.getInstance("HmacMD5");
            mac.init(key);

            byte[] bytes = mac.doFinal(msg.getBytes("UTF-8"));

            StringBuffer hash = new StringBuffer();
            for (int i = 0; i < bytes.length; i++) {
                String hex = Integer.toHexString(0xFF & bytes[i]);
                if (hex.length() == 1) {
                    hash.append('0');
                }
                hash.append(hex);
            }
            digest = hash.toString();
        } catch (UnsupportedEncodingException | NoSuchAlgorithmException | InvalidKeyException e) {
        }
        return digest;
    }

Copyright © Linux教程網 All Rights Reserved