一、簡介:
rsa加密演算法是最常用的非對稱加密演算法,cfca在證書服務中離不了它。rsa是第乙個比較完善的公開金鑰演算法,它既能用於加密,也能用於數字簽名。這個演算法經受住了多年深入的密碼分析,雖然密碼分析者既不能證明也不能否定rsa的安全性,但這恰恰說明該演算法有一定的可信性,目前它已經成為最流行的公開金鑰演算法。
二、rsa的公鑰、私鑰的組成,以及加密、解密的公式可見於下表
三、使用方式:
① 假設a、b機器進行通訊,已a機器為主;
② a首先需要用自己的私鑰為傳送請求資料簽名,並將公鑰一同傳送給b;
③ b收到資料後,需要用a傳送的公鑰進行驗證,已確保收到的資料是未經篡改的;
④ b驗籤通過後,處理邏輯,並把處理結果返回,返回資料需要用a傳送的公鑰進行加密(公鑰加密後,只能用配對的私鑰解密);
⑤ a收到b返回的資料,使用私鑰解密,至此,一次資料互動完成。
四、**示例:
第一步獲取私鑰,為簽名做準備。
/**簽名示例 通過第一步得到的私鑰,進行簽名操作,具體請看以下**:* 讀取私鑰 返回privatekey
* @param
path 包含私鑰的證書路徑
* @param
password 私鑰證書密碼
* @return
返回私鑰privatekey
* @throws
keystoreexception
* @throws
nosuchalgorithmexception
* @throws
certificateexception
* @throws
ioexception
* @throws
unrecoverablekeyexception
*/private
static
privatekey getprivatekey(string path,string password)
throws
keystoreexception, nosuchalgorithmexception, certificateexception,
ioexception, unrecoverablekeyexception
else
ks.load(fis, npassword);
fis.close();
enumeration
en =ks.aliases();
string keyalias = null
;
if(en.hasmoreelements())
return
(privatekey) ks.getkey(keyalias, npassword);
}
/**得到公鑰publickey後,再去驗證簽名,**如下:* 私鑰簽名: 簽名方法如下:base64(rsa(md5(src),privatekey)),其中src為需要簽名的字串,
privatekey是商戶的cfca證書私鑰。
* @param
plaintext 待簽名字串
* @param
path 簽名私鑰路徑
* @param
password 簽名私鑰密碼
* @return
返回簽名後的字串
* @throws
exception
*/public
static
string sign(string plaintext,string path,string password)
throws
exception
/**至此,簽名驗籤已經完畢* 用公鑰證書進行驗籤
* @param
message 簽名之前的原文
* @param
ciphertext 簽名
* @param
pubkeyn 公鑰n串
* @param
pubkeye 公鑰e串
* @return
boolean 驗籤成功為true,失敗為false
* @throws
exception
*/public
static
boolean
verify(string message, string ciphertext,string pubkeyn,
string pubkeye)
throws
exception
else
}
提供乙個從.cer檔案讀取公鑰的方法:
/**附上所有**:* 讀取公鑰cer
* @param
path .cer檔案的路徑 如:c:/abc.cer
* @return
base64後的公鑰串
* @throws
ioexception
* @throws
certificateexception
*/public
static string getpublickey(string path) throws
ioexception,
certificateexception
byte result =out.tobytearray();
res =base64.bytearraytobase64(result);
return
res;
}
本文**:
RSA非對稱金鑰加密原理
一 基礎數論 1 互質關係 2 尤拉函式 二 rsa加密 第一步,隨機選擇兩個不相等的質數p和q。愛麗絲選擇了61和53。實際應用中,這兩個質數越大,就越難破解。第二步,計算p和q的乘積n。愛麗絲就把61和53相乘。n 61 53 3233 n的長度就是金鑰長度。3233寫成二進位制是1100101...
mysql 非對稱金鑰 RSA非對稱加密演算法
首先要理解的是公鑰加密後私鑰是可以解密的。私鑰加密後公鑰也是可以解密的。公鑰和私鑰是成對出現的。一般都是公鑰加密,私鑰解密。公鑰私鑰原理 張三有兩把鑰匙,一把是公鑰,另一把是私鑰 張三把公鑰送給他的朋友們 李 四 王五 趙六 每人一把 李四要給張三寫一封保密的信。她寫完後用張三的公鑰加密,就可以達到...
Java中RSA非對稱金鑰加解密使用示例
一 簡介 rsa加密演算法是最常用的非對稱加密演算法,cfca在證書服務中離不了它。rsa是第乙個比較完善的公開金鑰演算法,它既能用於加密,也能用於數字簽名。這個演算法經受住了多年深入的密碼分析,雖然密碼分析者既不能證明也不能否定rsa的安全性,但這恰恰說明該演算法有一定的可信性,目前它已經成為最流...