国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

java 密碼學(xué)

2019-11-18 14:41:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  1. 密碼學(xué)簡(jiǎn)介 – 加密與解密
加密是一個(gè)將欲加密的資料用一些數(shù)學(xué)運(yùn)算轉(zhuǎn)成一團(tuán)令人看不懂的東西的過(guò)程; 解密則是將加密文轉(zhuǎn)換回原始文字的過(guò)程。這個(gè)過(guò)程中,扮演原始文字與加密文字之間轉(zhuǎn)換的數(shù)學(xué)演算法稱(chēng)為Cipher。



圖1 Cipher的運(yùn)作

現(xiàn)代的Cipher多半會(huì)用Key來(lái)加密與解密資料。所謂Key是指一個(gè)機(jī)密值,我們可將它視為一通行密碼。加密文字必需使用對(duì)映的Key才能解密為原始文字。
  A. 對(duì)稱(chēng)型Cipher
對(duì)稱(chēng)型Cipher在傳送端與接收端所用的Key是一樣的,如圖2所示,對(duì)稱(chēng)型Cipher又叫PRivate Key Cipher,因?yàn)镵ey 的值只有傳送端和接收端知道。假如有第三者知道了Private Key值,也就能解開(kāi)加密的資料。



圖2 對(duì)稱(chēng)型Cipher的運(yùn)作

  B. 非對(duì)稱(chēng)型Cipher
非對(duì)稱(chēng)型的Cipher又叫Public Key Cipher,Cipher除了Private Key外,還會(huì)引進(jìn)一可以隨意散發(fā)的Public Key。被 Public Key加密的資料只有相對(duì)映的Private Key可以解開(kāi),同樣的被Private Key加密的資料也只有相對(duì)映的Public Key 可以解開(kāi)。如圖3所示,顯示了非對(duì)稱(chēng)型Cipher的運(yùn)作過(guò)程。



圖3 非對(duì)稱(chēng)型Cipher的運(yùn)作

  C. 訊息摘要 (Message Digest)
訊息摘要是從一組輸入資料計(jì)算所得的一個(gè)特別數(shù)字,其原理運(yùn)作就如hash function一般。在密碼學(xué)的運(yùn)用裡,一般是用來(lái)驗(yàn)證資料是否被竄改。

2. JCE下載
因?yàn)槊绹?guó)法規(guī)的限制,Sun在JDK裡只提供了少數(shù)的加密方法,其餘大部份則只在SunJCE裡提供,而且SunJCE的 API限制只有美國(guó)、加拿大地區(qū)可以下載。表1為Sun及SunJCE分別支援的加密演算法。


名稱(chēng)
型別

Sun
md5
訊息摘要

SHA-1
訊息摘要

DSA
簽章

SunJCE
HmacMD5
MAC

HmacSHA1
MAC

DES
對(duì)稱(chēng)型Cipher

DESede
非對(duì)稱(chēng)型Cipher

PBEWithMD5AndDES
對(duì)稱(chēng)型Cipher

DH
Key的交換


表1 Sun及SunJCE支援的加密演算法

雖然美國(guó)法規(guī)有這樣的限定,但是在美國(guó)境外也已經(jīng)有廠商實(shí)作出JCE,並且可以在網(wǎng)路上直接下載,表2就是下載網(wǎng)址的列表。
套件
網(wǎng)址
免費(fèi)

JCE
http://java.sun.com/prodUCts/jdk/1.2/jce/


Cryptix
http://www.cryptix.org/


IAIK
http://wwwjce.iaik.tu-graz.ac.at/



表2 JCE軟體下載網(wǎng)址

3. JCE安裝

解壓縮到JDK目錄下
Set ClassPath= C:/JDK/bin/cryptix-jce-api.jar;C:/JDK/bin/cryptix-jce-compat.jar;C:/JDK/bin/cryptix-jce-provider.jar …
在JDK/lib/security/java.security中加入
security.provider.1=sun.security.provider.Sun (原來(lái)就有的)
security.provider.2=cryptix.jce.provider.Cryptix (加入)


4. 程式範(fàn)例
在舉例之前,我先完成一個(gè)公用類(lèi)別,用來(lái)將字串轉(zhuǎn)成十六進(jìn)位表示法。
public class Msg {
 public static String toHexString(byte[] b) {
  StringBuffer hexString = new StringBuffer();
  String plainText;

  for (int i = 0; i < b.length; i++) {
   plainText = Integer.toHexString(0xFF & b[i]);
   if (plainText.length() < 2) {
    plainText = "0" + plainText;
   }
   hexString.append(plainText);
  }
  return hexString.toString();
 }
}

5. 訊息摘要 (message digest, 以SHA1為例)
  產(chǎn)生訊息摘要的步驟:

呼叫g(shù)etInstance取得MessageDigest實(shí)體
呼叫update將資料餵給MessageDigest

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 含山县| 延安市| 自贡市| 宾川县| 静海县| 平安县| 新邵县| 清徐县| 阿鲁科尔沁旗| 东阿县| 尼勒克县| 米林县| 四川省| 出国| 德庆县| 平原县| 博乐市| 邢台县| 河西区| 麦盖提县| 东丰县| 保山市| 屏南县| 陇南市| 城口县| 东乌珠穆沁旗| 新乐市| 江城| 沾益县| 澜沧| 合阳县| 柞水县| 西畴县| 龙海市| 青田县| 涿州市| 侯马市| 伊川县| 惠安县| 化州市| 新昌县|