"簡單"的加密簽名

  做爲最受歡迎的御三家之一,想必你們對於小火龍仍是至關熟悉的,那麼圖片的這個場景發生在哪裏呢?這個「祕密」就靠你們來破解了。答案將在結尾揭曉~~

什麼是加密和簽名

  加密,用某種特殊的方式對數據進行處理,使普通的接受者沒法正常處理數據。如經常使用的 RSA非對稱加密, MD5, DESAES對稱加密等等。
  簽名,在傳輸數據前先對數據 A 進行處理獲得數據 B,而後將 AB 發送給接受者,接受者得到數據後對數據 B 進行 解籤獲得數據 C,若是數據 C和數據 A同樣,則認爲數據沒有被修改。
  從上面的介紹中能夠看出,加密主要是用來使數據沒法被正確識別,而簽名主要是用來確保數據未被修改。

哪些場景使用

  在安全爲重中之重的支付領域,經常會採用加密和加簽的方式來確保數據的安全性。因爲RAS這種加密方式不容易被破解,所以一般使用它保證數據安全。
  RAS又被稱爲非對稱加密,擁有一個公鑰和一個私鑰,公鑰能夠交給對方,私鑰本身保存。公鑰用做加密使用,而私鑰用於簽名。
  首先,商戶會生成一對公私鑰,公鑰交給銀行。而銀行一樣也會將生成的公鑰交給商戶。商戶向銀行發送支付報文時,先用自身的私鑰對支付須要的參數進行簽名生成sign這個字段,接着將sign這個字段值和以前的參數用銀行的公鑰加密,接着經過某些傳輸協議發送給銀行。
  銀行獲得報文後,用自身的私鑰進行解密,若是不能解開,證實不是商戶發的。若是解密成功,再用商戶的公鑰對sign進行解籤,與數據進行對比判斷。安全

爲何

爲何不用Des,Aes或者Md5。

  Des這些對稱加密,須要的是一個key。這些key在必定條件下能夠被暴力破解,MD5一樣也是如此。bash

爲何不用公鑰加簽,私鑰加密?

  假設用私鑰加密,公鑰加簽。那麼在商戶發給銀行的過程當中,銀行須要用公鑰解密,因爲公鑰是被暴露在外面的,若是被非銀行的人拿到,數據被解密後就能看到了,雖然他不能肯定這些數據有沒有被修改過。而若是用公鑰加密,私鑰是掌握在銀行手中。app

哪些地方須要注意

  1. 不必定Md5只能用來加密,一樣能夠用來加簽。
  2. RAS雖然安全,可是會給開發帶來難度。

How to use

加簽

Map<String,String> map=new HashMap<>();
        map.put("client_id", AppConstant.APPID);
        map.put("method","user.baseinfo");
        map.put("access_token",accessToken);
        map.put("timestamp",String.valueOf(System.currentTimeMillis()));
        map.put("client_secret",AppConstant.APPSECRET);
        String sign= MD5.md5Sign(map);
        map.put("sign",sign);
        
        /**md5加簽**/
        public static String md5Sign(Map<String,String> params){
            String[] keys = params.keySet().toArray(new String[0]);
            Arrays.sort(keys);
            // 第二步:把全部參數名和參數值串在一塊兒
            StringBuilder query = new StringBuilder();
            for (String key : keys) {
                String value = params.get(key);
                query.append(key).append(value);
            }
            // 第三步:md5加密
        return DigestUtils.md5Hex(query.toString());
    }
複製代碼

  這段代碼用的是md5方式進行加簽,在這邊應該能夠看出來加簽只是加密的一種運用,所以任何一種加密方式均可以用作簽名。ide

結語

  本人昨天剛剛離職,多是更想去看看外面精彩的世界吧,和小智同樣想要成爲神奇寶貝大師~~~

   附上答案:小火龍被訓練家拋棄的那段。不過是劇場版:《就決定是你了》 裏的場景。 猛戳我,連接哦。不知道你們有沒有看過,仍是很好看的,我大皮神開口講話了!!!ui

相關文章
相關標籤/搜索