亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
  • RSA算法是第一個能同時用于加密和數字簽名的算法 目前還沒有被破解,是使用最多的非對稱加密算法. RSA算法支持公鑰加密、私鑰解密.私鑰加密、公鑰解密. 有些算法只規定了公鑰加密、私鑰解密. RSA密鑰長度:512~65536(64整數倍). JDK實現RSA算法的密鑰默認長度為1024,BC則是2048.
    查看全部
  • 使用KeyPair、KeyFactory都可以產生密鑰對. DH: 由甲方公鑰產生乙方密鑰對時候,需要使用X509EncodedKeySpec進行密鑰轉換. 在構造本地密鑰過程中,需要使用X509EncodedKeySpec分別對公鑰與密鑰進行轉換. RSA: 在加密、解密之前都需要使用X509EncodedKeySpec進行密鑰轉換.
    查看全部
  • DH密鑰交換算法使用場景.
    查看全部
    0 采集 收起 來源:DH算法實現

    2016-07-04

  • //加密 p1-加密數據 p2-本地密鑰. public static byte[] encrypt(byte[] data,byte[] key){ //生成本地密鑰 SecretKey secretKey=new SecretKeySpec(key,SECRET_ALGORITHM); //數據加密 Cipher cipher=Cipher.getInstance(secretKey.getAlgorithm()); cipher.init(Cipher.ENCRYPT_MODE, secretKey); return cipher.doFinal(data); } //解密 public static byte[] decrypt(byte[] data,byte[] key){ //生成本地密鑰 SecretKey secretKey=new SecretKeySpec(key,SECRET_ALGORITHM); //數據解密 Cipher cipher=Cipher.getInstance(secretKey.getAlgorithm()); cipher.init(Cipher.DECRYPT_MODE, secretKey); return cipher.doFinal(data); } 測試類中: 調用generateKey()、getPublicKey()、getPrivateKey()方法生成并獲取公鑰私鑰(甲方). 調用generatekey(byte [] key)、getPublicKey()、getPrivateKey()方法構造并獲取公鑰私鑰(乙方). 調用getSecretKey(byte [] b1,byte[] b2)方法分別組裝甲方的本地密鑰與乙方的本地密鑰. 組裝甲方本地密鑰(甲方私鑰,乙方公鑰) 組裝乙方本地密鑰(乙方私鑰,甲方公鑰) 調用加密解密方法.
    查看全部
    0 采集 收起 來源:DH算法實現

    2016-07-04

  • //構建本地密鑰 public static byte[] getSecretKey(byte[] publicKey,byte[] privateKey){ //初始化公鑰、密鑰材料轉換 X509EncodedKeySpec x509KeySpec=new X509EncodedKeySpec(publicKey); //實例化密鑰工廠 KeyFactory keyFactory=KeyFactory.getInstance("DH"); //產生轉換后的公鑰 PublicKey pubKey=keyFactory.generatePublic(x509KeySpec); //初始化私鑰、密鑰材料轉換 PKCS8EncodedKeySpec pkcs8KeySpec=new PKCS8EncodedKeySpec(privateKey); //產生轉換后的私鑰 PrivateKey priKey=keyFactory.generatePrivate(pkcs8KeySpec); KeyAgreement keyAgree=KeyAgreement.getInstance("DH"); //初始化 keyAgree.init(priKey); //下一步初始化 keyAgree.doPhase(pubKey, true); //生成本地密鑰 SecretKey secretKey=keyAgree.generateSecret("AES"); return secretKey.getEncoded(); }
    查看全部
    0 采集 收起 來源:DH算法實現

    2018-03-22

  • //獲取公鑰 public static byte[] getPublicKey(Map<String,Object> keyMap){ Key key=(Key) keyMap.get(PUBLIC_KEY); return key.getEncoded(); } //獲取私鑰 public static byte[] getPrivateKey(Map<String,Object> keyMap){ Key key=(Key)keyMap.get(PRIVATE_KEY); return key.getEncoded(); }
    查看全部
    0 采集 收起 來源:DH算法實現

    2018-03-22

  • //根據一方公鑰生成另一方密鑰對 public static Map<String,Object> generateKey(byte[] key){ //解析甲方的公鑰、轉換公鑰的材料 X509EncodedKeySpec x509KeySpec=new X509EncodedKeySpec(key); //實例化密鑰工廠 KeyFactory keyFactory=KeyFactory.getInstance("DH"); //產生轉換后的公鑰,該公鑰是甲方的 PublicKey pubKey=keyFactory.generatePublic(x509KeySpec); //由甲方的公鑰構造乙方密鑰 DHParameterSpec dhParamSpec=((DHPublicKey)pubKey).getParams(); //實例化密鑰生成器 KeyPairGenerator keyPairGenerator=KeyPairGenerator.getInstance(keyFactory.getAlgorithm()); //初始化密鑰生成器 keyPairGenerator.initialize(dhParamSpec); //產生密鑰對 KeyPair keyPair=keyPairGenerator.genKeyPair(); //乙方公鑰 DHPublicKey publicKey=(DHPublicKey)keyPair.getPublic(); //乙方私鑰 DHPrivateKey privateKey=(DHPrivateKey)keyPair.getPrivate(); //將密鑰存儲在Map中 Map<String,Object> keyMap=new HashMap<String,Object>(); keyMap.put(PUBLIC_KEY, publicKey); keyMap.put(PRIVATE_KEY, privateKey); return keyMap; }
    查看全部
    0 采集 收起 來源:DH算法實現

    2018-03-22

  • 代碼部分: //初始化甲方密鑰對. public static Map<String,Object> generateKey(){ //實例化密鑰對生成器 KeyPairGenerator keyPairGenerator=KeyPairGenerator.getInstance("DH"); //初始化密鑰對生成器 keyPairGenerator.initialize(KEY_SIZE); //生成密鑰對 KeyPair keyPair=keyPairGenerator.generateKeyPair(); //甲方公鑰 DHPublicKey publicKey=(DHPublicKey) keyPair.getPublic(); //甲方私鑰 DHPrivateKey privateKey=(DHPrivateKey) keyPair.getPrivate(); //將密鑰存儲在map中 Map<String,Object> keyMap=new HashMap<String,Object>(); keyMap.put(PUBLIC_KEY, publicKey); keyMap.put(PRIVATE_KEY, privateKey); return keyMap; }
    查看全部
    0 采集 收起 來源:DH算法實現

    2018-03-22

  • KeyAgreement類用于生成本地密鑰(提供密鑰協定或密鑰交換協議的功能).使用其getInstance()靜態方法創建實例,參數是算法名,指定生成的本地密鑰符合某種特定算法. KeyAgreement類的init()方法用于給定密鑰初始化此密鑰協定.doPhase()方法用于用給定密鑰執行此密鑰協定的下一個階段.兩個方法的參數都是Key類型,即使用公鑰、私鑰來初始化密鑰協定. KeyAgreement類的generateSecret()方法創建本地密鑰,參數是對稱加密算法名稱.返回SecretKey類型.
    查看全部
  • KeyPairGenerator:密鑰對生成器 KeyGenerator:密鑰生成器 使用KeyPairGenerator的getInstance()靜態方法創建實例,參數是算法名稱.指定密鑰對生成器生成指定算法的密鑰對. 使用KeyPairGenerator的initialize()方法初始化密鑰的長度. 使用KeyPairGenerator的generateKeyPair()方法創建KeyPair實例.一個KeyPair實例表示一對密鑰,即一個密鑰對.包括公鑰與私鑰. KeyPair的getPublic()方法返回PublicKey類型(公鑰). getPrivate()方法返回PrivateKey類型(私鑰). DHPublicKey接口、DHPrivateKey接口分別繼承PublicKey接口與PrivateKey接口. X509EncodedKeySpec實例作用是把密鑰按照X.509標準進行編碼. 直接new一個實例,構造方法參數是密鑰. KeyFactory是密鑰工廠,SecretKeyFactory也是密鑰工廠.但是前者可以產生密鑰對,即公鑰、私鑰. 使用KeyFactory的getInstance()靜態方法返回一個KeyFactory實例,參數指定算法名,指定密鑰工廠產生的密鑰是符合某種特定算法. 使用KeyFactory的generatePublic()方法可以生成一個公鑰,參數是X509EncodedKeySpec的實例.返回PublicKey. 使用DHPublicKey的getParams()方法返回DHParameterSpec實例. DHParameterSpec:此類指定隨同DH算法使用的參數集合,用于通過一方的公鑰生成另一方的密鑰對. 使用KeyPairGenerator的initialize()初始化方法時,參數還可以是DHParameterSpec的實例.用于通過一方公鑰生成密鑰對.
    查看全部
  • JAVA DH加密算法 DH算法的默認密鑰長度是1024,密鑰長度必須是64的倍數,在512到1024位之間. DH是一種適基于密鑰一致協議的加密算法 密鑰一致協議就是允許兩名用戶在公開媒體上交換信息以生成"一致"的、可以共享的密鑰. 由甲方產出一對密鑰(公鑰、私鑰),乙方依照甲方公鑰產生乙方密鑰對(公鑰、私鑰),以此為基線作為數據傳輸保密基礎.同時雙方使用同一種對稱加密算法構建本地密鑰(SecretKey)對數據加密. 在互通了本地密鑰算法后,甲乙雙方公開自己的公鑰,使用對方的公鑰和剛才產生的私鑰加密數據,同時可以使用對方的公鑰和自己的私鑰對數據解密. 流程分析: 1.甲方構建密鑰對,將公鑰公布給乙方,將私鑰保留. 乙方通過甲方公鑰構建密鑰對,將公鑰公布給甲方,將私鑰保留. 2.甲方使用自己私鑰、乙方公鑰與約定數據對稱加密算法構建本地密鑰,然后通過本地密鑰加密數據,發送給乙方加密后的數據. 乙方使用自己私鑰、甲方公鑰與約定數據對稱加密算法構建本地密鑰,然后通過本地密鑰對數據解密. 3.乙方使用自己私鑰、甲方公鑰與約定數據對稱加密算法構建本地密鑰,然后通過本地密鑰加密數據,發送給甲方加密后的數據. 甲方使用私鑰、乙方公鑰與約定數據對稱加密算法構建本地密鑰,然后通過本地密鑰對數據解密.
    查看全部
  • 非對稱加密算法-DH(密鑰交換) 長度為512~1024(64的倍數)
    查看全部
    0 采集 收起 來源:DH算法概述

    2016-07-02

  • 對稱加密算法: 甲方與乙方事先要約定使用哪種算法與具有相同的密鑰.如何安全的傳遞密鑰是對稱加密帶來的困擾. 在這個基礎上產生了非對稱加密算法,公鑰是公開的,自己保留私鑰,因此也不用擔心密鑰泄露的問題.
    查看全部
    0 采集 收起 來源:概述

    2016-07-02

  • 非對稱加密算法的特點: 算法強度復雜、安全性依賴于算法與密鑰.但是由于算法復雜,使得非對稱算法加解密速度沒有對稱算法加解密的速度快. 對稱密鑰體制中只有一種密鑰,并且是非公開的,如果要解密就得讓對方知道密鑰.所以保證其安全性就是保證密鑰的安全. 非對稱密鑰體制有兩種密鑰,其中一個是公開的,這樣就可以不需要像對稱密碼那樣向對方傳輸密鑰了.因此安全性就大了很多. 對稱密鑰與非對稱密鑰比較: 算法復雜度:對稱密鑰<非對稱密鑰 加解密速度:對稱密鑰>非對稱密鑰 安全性:對稱密鑰<非對稱密鑰
    查看全部
    0 采集 收起 來源:DH算法概述

    2018-03-22

  • 非對稱加密算法 因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法. 非對稱加密算法需要兩個密鑰:公開密鑰和私有密鑰.公開密鑰與私有密鑰是一對的. 如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密. 如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密(某些算法有提供). 非對稱加密算法實現機密信息交換的基本過程是: 甲方生成一對密鑰并將其中的一把作為公用密鑰向其它方公開,得到該公用密鑰的乙方使用該密鑰對信息進行加密后再發送給甲方. 甲方再用自己保存的另一把專用密鑰對加密后的信息進行解密. 另一方面,甲方可以使用乙方提供的公鑰對信息進行加密后再發送給乙方,乙方再用自己的私匙對數據進行解密. DH-密鑰交換算法是非對稱加密算法的起源. RSA-基于因子分解算法,是應用最多的非對稱加密算法.
    查看全部
    0 采集 收起 來源:概述

    2016-07-02

舉報

0/150
提交
取消
課程須知
JAVA加解密是一個系列的課程,為了更好的學習本門課程,請小伙伴們學習非對稱加密算法前,先學習下網站中的《JAVA實現Base64加密》以及《JAVA實現對稱加密》兩門課程。
老師告訴你能學到什么?
1、掌握非對稱加密算法在Java中的實現 2、了解非對稱加密算法的應用場景

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!