數字加密算法

一:數字簽名簡介

什麼是數字簽名?帶有密鑰(公鑰,私鑰)的消息摘要算法,用於驗 證數據完整性,認證數據來源,以及抗否定。通俗來說就是證實某個消息或 者文件 是本人發出/認同的,這個的話用於的面就比較多了。好比電子合同, 銀行簽約,電子受權等等。因此他的安全性是咱們必需要考慮的。數字簽名 中經常使用的簽名算法有RSA、DSA、ECDSA等。算法

二:數字簽名的基本過程

基本過程以下:安全

(1)發送方生成非對稱加密算法的公鑰和私鑰對,並公佈其公鑰和簽名算法(例如sha256WithRSAEncryption);eclipse

(2)發送方對發送的消息先計算其數字摘要,而後使用私鑰對摘要進行加密,生成數字簽名;ide

(3)接收方在接收到聲稱來自XXX的消息時,先去查詢XXX的公佈的公鑰和簽名算法;編碼

(4)接收方使用公鑰對數字簽名解密並與計算出的數字摘要進行比對,若是比對一致,那麼消息來自於XXX而且未被篡改。加密

上述過程的安全前提基於如下兩點:spa

①發送方的簽名算法沒法被破解,且私鑰未發生泄露code

②接收方查詢的公鑰以及簽名算法屬實blog

三:在eclipse中分析DSA簽名算法

(1)在主類Mainactivity中分析ip

分析這幾個自定義方法:

  • getPublicKey(keyMap);//獲取公鑰

  • getPrivateKey(keyMap);//獲取私鑰

  • be.encode(publicKey));//公鑰加密

  • be.encode(privateKey));//私鑰加密

  • DSA.sign(data.getBytes(), privateKey);//講私鑰進行簽名

  • DSA.verify(data.getBytes(), publicKey, sign)+"");//進行驗證

數字加密算法

(2)在自定義類DSA中分析

幾個重要的方法

  • generateKeyPair:生成密鑰對
  • getPublic獲取公鑰
  • getPrivate:獲取私鑰
  • X509EncodedKeySpec:根據給定的編碼密鑰建立一個新的X509EncodedKeySpec

數字加密算法
數字加密算法
數字加密算法
數字加密算法


小結

一、介紹數字簽名系列相關的知識以及實現原理。

二、在eclipse中分析了DSA簽名算法的代碼。

相關文章
相關標籤/搜索