亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java加密和數字簽名編程快速入門

2019-11-18 15:44:50
字體:
來源:轉載
供稿:網友

  本文主要談一下密碼學中的加密和數字簽名,以及其在java中如何進行使用。對密碼學有愛好的伙伴,推薦看BrUCe Schneier的著作:Applied Crypotography。在jdk1.5的發行版本中安全性方面有了很大的改進,也提供了對RSA算法的直接支持,現在我們從實例入手解決問題(本文僅是作為簡單介紹):

  一、密碼學上常用的概念 

  1)消息摘要:

  這是一種與消息認證碼結合使用以確保消息完整性的技術。主要使用單向散列函數算法,可用于檢驗消息的完整性,和通過散列密碼直接以文本形式保存等,目前廣泛使用的算法有MD4、md5、SHA-1,jdk1.5對上面都提供了支持,在java中進行消息摘要很簡單, java.security.MessageDigest提供了一個簡易的操作方法:

/**
*MessageDigestExample.java
*Copyright 2005-2-16
*/
import java.security.MessageDigest;
/**
*單一的消息摘要算法,不使用密碼.可以用來對明文消息(如:密碼)隱藏保存
*/
public class MessageDigestExample{
 public static void main(String[] args) throws Exception{
  if(args.length!=1){
   System.err.   System.exit(1);
  }

  byte[] plainText=args[0].getBytes("UTF8");

  //使用getInstance("算法")來獲得消息摘要,這里使用SHA-1的160位算法
  MessageDigest messageDigest=MessageDigest.getInstance("SHA-1");

  System.out.println("/n"+messageDigest.getProvider().getInfo());
  //開始使用算法
  messageDigest.update(plainText);
  System.out.println("/nDigest:");
  //輸出算法運算結果
  System.out.println(new String(messageDigest.digest(),"UTF8"));
 }
}
  還可以通過消息認證碼來進行加密實現,javax.crypto.Mac提供了一個解決方案,有愛好者可以參考相關API文檔,本文只是簡單介紹什么是摘要算法。

  2)私鑰加密:

  消息摘要只能檢查消息的完整性,但是單向的,對明文消息并不能加密,要加密明文的消息的話,就要使用其他的算法,要確保機密性,我們需要使用私鑰密碼術來交換私有消息。

  這種最好理解,使用對稱算法。比如:A用一個密鑰對一個文件加密,而B讀取這個文件的話,則需要和A一樣的密鑰,雙方共享一個私鑰(而在web環境下,私鑰在傳遞時輕易被偵聽):

  使用私鑰加密的話,首先需要一個密鑰,可用javax.crypto.KeyGenerator產生一個密鑰(java.security.Key),然后傳遞給一個加密工具(javax.crypto.C
ipher),該工具再使用相應的算法來進行加密,主要對稱算法有:DES(實際密鑰只用到56位),AES(支持三種密鑰長度:128、192、256位),通常首先128位,其他的還有DESede等,jdk1.5種也提供了對對稱算法的支持,以下例子使用AES算法來加密:

/**
*PrivateExmaple.java
*Copyright 2005-2-16
*/
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import java.security.Key;

/**
*私鈅加密,保證消息機密性
*/
public class PrivateExample{
 public static void main(String[] args) throws Exception{
  if(args.length!=1){
   System.err.println("Usage:java PrivateExample <text>");
   System.exit(1);
  }
  byte[] plainText=args[0].getBytes("UTF8");

  //通過KeyGenerator形成一個key
  System.out.println("/nStart generate AES key");
  KeyGenerator keyGen=KeyGenerator.getInstance("AES");
  keyGen.init(128);
  Key key=keyGen.generateKey();
  System.out.println("Finish generating DES key");

  //獲得一個私鈅加密類Cipher,ECB是加密方式,PKCS5Padding是填充方法
  Cipher cipher=Cipher.getInstance("AES/ECB/PKCS5Padding");
  System.out.println("/n"+cipher.getProvider().getInfo());

  //使用私鈅加密
  System.out.println("/nStart encryption:");
  cipher.init(Cipher.ENCRYPT_MODE,key);
  byte[] cipherText=cipher.doFinal(plainText);
  System.out.println("Finish encryption:");
  System.out.println(new String(cipherText,"UTF8"));

  System.out.println("/nStart decryption:");
  cipher.init(Cipher.DECRYPT_MODE,key);
  byte[] newPlainText=cipher.doFinal(cipherText);
  System.out.println("Finish decryption:");

  System.out.println(new String(newPlainText,"UTF8"));

 }
}
  3)公鑰加密:

  上面提到,私鑰加密需要一個共享的密鑰,那么如何傳遞密鑰呢?web環境下,直接傳遞的話很輕易被偵聽到,幸好有了公鑰加密的出現。公鑰加密也叫不對稱加密,不對稱算法使用一對密鑰對,一個公鑰,一個私鑰,使用公鑰加密的數據,只有私鑰能解開(可用于加密);同時,使用私鑰加密的數據,只有公鑰能解開(簽名)。但是速度很慢(比私鑰加密慢100到1000倍),公鑰的主要算法有RSA,還包括Blowfish,Diffie-Helman等,jdk1.5種提供了對RSA的支持,是一個改進的地方:



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品美女在线| 久久精品视频在线观看| 国产精品视频26uuu| 亚洲欧美色图片| 在线观看不卡av| 红桃视频成人在线观看| 日韩中文字幕精品| 日韩精品在线影院| 日韩中文字幕在线观看| 国产精品久久久久aaaa九色| 福利视频第一区| 成人欧美一区二区三区在线湿哒哒| 亚洲一区二区精品| 国产精品99久久久久久白浆小说| 成人激情视频免费在线| 91大神在线播放精品| 国产自摸综合网| 自拍视频国产精品| 国产成人精品视频在线观看| 欧美乱妇高清无乱码| 一色桃子一区二区| 九九久久国产精品| 亚洲国产天堂久久国产91| 精品视频9999| 亚洲综合在线中文字幕| 成人a在线观看| 久久精品成人动漫| 欧美xxxx18性欧美| 国产aⅴ夜夜欢一区二区三区| 在线观看欧美日韩国产| 国产视频福利一区| 欧美激情在线观看| 久久久精品视频在线观看| 欧美性生活大片免费观看网址| 国产亚洲激情在线| 国产精品高清在线| 亚洲欧洲偷拍精品| 日韩av电影免费观看高清| 亚洲黄页视频免费观看| 亚洲成人教育av| 国产精彩精品视频| 国产视频欧美视频| 一区二区欧美激情| 日韩欧美国产黄色| 日韩精品在线免费观看视频| 成人性生交xxxxx网站| 欧美日韩中文字幕在线| 久久这里有精品| 久久av.com| 91视频8mav| 亚洲欧美日韩中文在线| 亚洲欧洲自拍偷拍| 亚洲人成网在线播放| 欧美日韩成人在线观看| 68精品久久久久久欧美| 久久久久久国产| 91香蕉嫩草神马影院在线观看| 永久免费毛片在线播放不卡| 久久亚洲私人国产精品va| www.亚洲人.com| 91久久精品一区| 伊人成人开心激情综合网| 亚洲精品99久久久久| 欧美日韩国产专区| 97在线视频免费| 欧美视频在线免费看| 欧美性黄网官网| 久热在线中文字幕色999舞| 日韩成人在线播放| 97涩涩爰在线观看亚洲| 亚洲男人天天操| 国产精品久久99久久| 最近2019年好看中文字幕视频| 97精品久久久中文字幕免费| 91精品久久久久久久久久久久久久| 日韩精品中文字幕在线观看| 91手机视频在线观看| 97在线视频免费观看| 国产精品入口免费视频一| 亚洲自拍偷拍福利| 精品亚洲aⅴ在线观看| 国产精品一区二区久久国产| 亚洲精品一区二区网址| 国产精品久久久久久av福利| 亚洲成人av在线| 欧美限制级电影在线观看| 国产91网红主播在线观看| 亚洲最大激情中文字幕| 欧美性受xxx| 在线播放日韩专区| 欧美一性一乱一交一视频| 中文字幕亚洲在线| 欧日韩不卡在线视频| 国产精品69久久| 欧美日韩色婷婷| 久久6免费高清热精品| 国产成人精品久久| 久久久久久久久久久网站| 欧美国产日韩一区二区三区| 久久精品99久久久久久久久| 亚洲欧美成人在线| 亚洲最大成人在线| 亚洲无限av看| 亚洲在线www| 亚洲精品久久久久中文字幕欢迎你| 久久久精品中文字幕| 亚洲国产精品网站| 日韩欧美在线中文字幕| 精品久久久久久久中文字幕| 亚洲free性xxxx护士hd| 国产一区二区激情| 992tv在线成人免费观看| 久久精品国产成人精品| 日韩天堂在线视频| 色婷婷综合久久久久| 亚洲综合在线播放| 国内揄拍国内精品| 欧美日韩在线视频观看| 777国产偷窥盗摄精品视频| 久久成人综合视频| 欧美丰满少妇xxxxx做受| 欧美激情久久久久| 国产精品一二区| 欧美一级视频在线观看| 欧洲日本亚洲国产区| 中文字幕亚洲二区| 一区二区三区四区在线观看视频| 深夜福利91大全| 国产精品久久久久久久久久久久久久| 欧美综合激情网| 91精品国产91久久久久久久久| 久久久免费精品| 久精品免费视频| 91精品国产乱码久久久久久蜜臀| 91成品人片a无限观看| 久久久视频精品| 欧美性xxxxxxx| 国产欧美一区二区三区四区| 精品一区二区三区四区| 久久久久免费视频| 国产精品都在这里| 亚洲国产另类 国产精品国产免费| 国产婷婷色综合av蜜臀av| 一区二区福利视频| 国产成+人+综合+亚洲欧洲| www.久久久久久.com| 日韩网站免费观看| 国产欧美日韩精品专区| 欧美日本在线视频中文字字幕| 91地址最新发布| 成人精品aaaa网站| 在线精品高清中文字幕| 国产精品视频xxxx| 国产不卡在线观看| 亚洲国产成人久久综合一区| 中文字幕日韩精品在线观看| 51午夜精品视频| 国产一区二区三区丝袜| 久久久久久久久久久免费精品| 欧美中文在线观看| 欧美电影免费观看高清| 国产成人精品国内自产拍免费看| 亚洲电影免费观看| 久久99精品久久久久久琪琪|