"簡單"的加密簽名

聆聽的車轍發表於2019-02-19

"簡單"的加密簽名
  作為最受歡迎的御三家之一,想必大家對於小火龍還是相當熟悉的,那麼圖片的這個場景發生在哪裡呢?這個“祕密”就靠大家來破解了。答案將在結尾揭曉~~

什麼是加密和簽名

"簡單"的加密簽名
  加密,用某種特殊的方式對資料進行處理,使普通的接受者無法正常處理資料。如常用的RSA非對稱加密,MD5,DESAES對稱加密等等。
  簽名,在傳輸資料前先對資料A 進行處理得到資料 B,然後將AB 傳送給接受者,接受者獲得資料後對資料 B 進行 解簽得到資料 C,如果資料C和資料A一樣,則認為資料沒有被修改。
  從上面的介紹中可以看出,加密主要是用來使資料無法被正確識別,而簽名主要是用來確保資料未被修改。

哪些場景使用

  在安全為重中之重的支付領域,常常會採用加密和加簽的方式來確保資料的安全性。由於RAS這種加密方式不容易被破解,因此通常使用它保證資料安全。
  RAS又被稱為非對稱加密,擁有一個公鑰和一個私鑰,公鑰可以交給對方,私鑰自己儲存。公鑰用作加密使用,而私鑰用於簽名。
  首先,商戶會生成一對公私鑰,公鑰交給銀行。而銀行同樣也會將生成的公鑰交給商戶。商戶向銀行傳送支付報文時,先用自身的私鑰對支付需要的引數進行簽名生成sign這個欄位,接著將sign這個欄位值和之前的引數用銀行的公鑰加密,接著通過某些傳輸協議傳送給銀行。
  銀行得到報文後,用自身的私鑰進行解密,如果不能解開,證明不是商戶發的。如果解密成功,再用商戶的公鑰對sign進行解籤,與資料進行對比判斷。

為什麼

為什麼不用Des,Aes或者Md5。

  Des這些對稱加密,需要的是一個key。這些key在一定條件下可以被暴力破解,MD5同樣也是如此。

為什麼不用公鑰加簽,私鑰加密?

  假設用私鑰加密,公鑰加簽。那麼在商戶發給銀行的過程中,銀行需要用公鑰解密,由於公鑰是被暴露在外面的,如果被非銀行的人拿到,資料被解密後就能看到了,雖然他不能確定這些資料有沒有被修改過。而如果用公鑰加密,私鑰是掌握在銀行手中。

哪些地方需要注意

  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方式進行加簽,在這邊應該可以看出來加簽只是加密的一種運用,因此任何一種加密方式都可以用做簽名。

結語

"簡單"的加密簽名
  本人昨天剛剛離職,可能是更想去看看外面精彩的世界吧,和小智一樣想要成為神奇寶貝大師~~~

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

相關文章