网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.文件上传的完全攻略.
.用Solstice Enterprise Manager建.
.Hibernate 的简单 Read 性能测试.
.Java 6中新型模态对话框API解析(.
.适用于SQL Server的Select检索高.
.JAVA的入门基础一些精典.
.JasperReport经验谈.
.介绍NEC扩展API.
.Java Web Start的作用.
.Jini能给您带来什么.
.用 Java 反射构建更通用的业务委.
.彻底解决Tomcat的页面提交时的中.
.sunTechnicalTrainingNOTE.
.tomcat向weblogic移植的中文乱码.
.java初级版FAQ---[jdk 安装].
.在Hibernate中实现复杂的数据映射.
.经典:从追MM谈Java的23种设计模.
.java类型转换与强制类型转换.
.Java理论与实践:再谈Urban性能传.
.教你如何配置安全的SOLARIS系统.

java 密碼學

发表日期:2008-1-5



  1. 密碼學簡介 – 加密與解密
加密是一個將欲加密的資料用一些數學運算轉成一團令人看不懂的東西的過程; 解密則是將加密文轉換回原始文字的過程。這個過程中,扮演原始文字與加密文字之間轉換的數學演算法稱為Cipher。



圖1 Cipher的運作

現代的Cipher多半會用Key來加密與解密資料。所謂Key是指一個機密值,我們可將它視為一通行密碼。加密文字必需使用對映的Key才能解密為原始文字。
  A. 對稱型Cipher
對稱型Cipher在傳送端與接收端所用的Key是一樣的,如圖2所示,對稱型Cipher又叫Private Key Cipher,因為Key 的值只有傳送端和接收端知道。假如有第三者知道了Private Key值,也就能解開加密的資料。



圖2 對稱型Cipher的運作

  B. 非對稱型Cipher
非對稱型的Cipher又叫Public Key Cipher,Cipher除了Private Key外,還會引進一可以隨意散發的Public Key。被 Public Key加密的資料只有相對映的Private Key可以解開,同樣的被Private Key加密的資料也只有相對映的Public Key 可以解開。如圖3所示,顯示了非對稱型Cipher的運作過程。



圖3 非對稱型Cipher的運作

  C. 訊息摘要 (Message Digest)
訊息摘要是從一組輸入資料計算所得的一個特別數字,其原理運作就如hash function一般。在密碼學的運用裡,一般是用來驗證資料是否被竄改。

2. JCE下載
因為美國法規的限制,Sun在JDK裡只提供了少數的加密方法,其餘大部份則只在SunJCE裡提供,而且SunJCE的 API限制只有美國、加拿大地區可以下載。表1為Sun及SunJCE分別支援的加密演算法。


名稱
型別

Sun
MD5
訊息摘要

SHA-1
訊息摘要

DSA
簽章

SunJCE
HmacMD5
MAC

HmacSHA1
MAC

DES
對稱型Cipher

DESede
非對稱型Cipher

PBEWithMD5AndDES
對稱型Cipher

DH
Key的交換


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

雖然美國法規有這樣的限定,但是在美國境外也已經有廠商實作出JCE,並且可以在網路上直接下載,表2就是下載網址的列表。
套件
網址
免費

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軟體下載網址

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 (原來就有的)
security.provider.2=cryptix.jce.provider.Cryptix (加入)


4. 程式範例
在舉例之前,我先完成一個公用類別,用來將字串轉成十六進位表示法。
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為例)
  產生訊息摘要的步驟:

呼叫getInstance取得MessageDigest實體
呼叫update將資料餵給MessageDigest
上一篇:java 面试 人气:643
下一篇:java 使用命令行参数 人气:1505
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐