欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
常用加解密技術(shù)介紹

通常把加密方法分為以下幾類(lèi)

       1.單向加密算法 顧名思義,這種算法只能加密,不能解密,是不可逆的,所以叫做單向加密算法。這些算法又稱(chēng)摘要算法,就類(lèi)似給一篇短文做一個(gè)提綱一樣。相同的短文,做出來(lái)的提綱是相同的,因此,可以根據提綱來(lái)判斷是不是那個(gè)短文;又因為只有提綱,是無(wú)法知道原來(lái)的短文具體是怎么寫(xiě)的,所以又是不可逆的。

       所以這種算法通常被用作對數據進(jìn)行簽名。

       1.MD5(Message Digest algorithm 5,信息摘要算法)

       2.SHA(Secure Hash Algorithm,安全散列算法)

       3.HMAC(Hash Message Authentication Code,散列消息鑒別碼)

       MD5、SHA、HMAC這三種加密算法,通常只把他們作為加密的基礎。單純的以上三種的加密并不可靠,通常與其他對稱(chēng)或非對稱(chēng)加密算法一起使用。 例如:

       Signature dsa = Signature.getInstance("SHA1withRSA");

       SHA1withRSA就是說(shuō)明這是通過(guò)SHA1算法簽名并通過(guò)RSA算法加密之后得到簽名(也叫文件摘要)的方式。

       還有一種算法經(jīng)常在加解密時(shí)使用, BASE64算法,BASE64嚴格地說(shuō),屬于編碼格式,而非加密算法。這種算法用于把字節數組轉化成字符串,方便存儲和傳輸和閱讀。

2.對稱(chēng)加密算法
   對稱(chēng)加密(也叫私鑰加密)指加密和解密使用相同密鑰的加密算法。有時(shí)又叫傳統密碼算法,就是加密密鑰和解密密鑰是相同的,或者加密/解密密鑰能夠從解密/加密密鑰中推算出來(lái),所以也稱(chēng)這種加密算法為秘密密鑰算法或單密鑰算法。
   對稱(chēng)加密算法的特點(diǎn)是算法公開(kāi)、計算量小、加密速度快、加密效率高。
   常見(jiàn)對稱(chēng)加密算法如下:
   1.DES算法
   2.3DES/edeDES/TDES算法
   3.AES算法
   4.Twofish算法
   5.Blowfish算法
   6.RC2算法
   7.RC4算法
   8.RC5算法
   9.RC6算法
   10.PBE算法
   11.CAST算法
   12.IDEA算法
3.非對稱(chēng)加密算法
   非對稱(chēng)加密算法(asymmetric cryptographic algorithm)又名“公開(kāi)密鑰加密算法”。
    非對稱(chēng)加密算法需要兩個(gè)密鑰:公開(kāi)密鑰(publickey)和私有密鑰(privatekey)。公開(kāi)密鑰與私有密鑰是一對,如果用公開(kāi)密鑰對數據進(jìn)行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進(jìn)行加密,那么只有用對應的公開(kāi)密鑰才能解密。因為加密和解密使用的是兩個(gè)不同的密鑰,所以這種算法叫作非對稱(chēng)加密算法。非對稱(chēng)加密算法實(shí)現機密信息交換的基本過(guò)程是:甲方生成一對密鑰并將其中的一把作為公用密鑰向其它方公開(kāi);得到該公用密鑰的乙方使用該密鑰對機密信息進(jìn)行加密后再發(fā)送給甲方;甲方再用自己保存的另一把專(zhuān)用密鑰對加密后的信息進(jìn)行解密。另一方面,甲方可以使用自己的私密鑰對機密信息進(jìn)行加密后再發(fā)送給乙方;乙方再用甲方的公鑰對加密后的信息進(jìn)行解密。
    非對稱(chēng)密碼體制的特點(diǎn):算法強度復雜、安全性依賴(lài)于算法與密鑰但是由于其算法復雜,而使得加密解密速度沒(méi)有對稱(chēng)加密解密的速度快。對稱(chēng)密碼體制中只有一種密鑰,并且是非公開(kāi)的,如果要解密就得讓對方知道密鑰。所以保證其安全性就是保證密鑰的安全,而非對稱(chēng)密鑰體制有兩種密鑰,其中一個(gè)是公開(kāi)的,這樣就可以不需要像對稱(chēng)密碼那樣傳輸對方的密鑰了。這樣安全性就大了很多。
   常見(jiàn)非對稱(chēng)算法有如下幾種:
   1.RSA算法
   2.DH算法
   3.DSA-Digital Signature Algorithm(數字簽名算法)
   4.ECC-Elliptic Curves Cryptography(橢圓曲線(xiàn)密碼編碼學(xué))
 加解密算法使用說(shuō)明(java語(yǔ)言)

一、BASE64編碼算法
    BASE64算法類(lèi)似于URLEncoder/URLDecoder類(lèi)的算法,實(shí)際上是一種轉碼的算法,并不是加密算法。轉碼后,每76個(gè)字符加一個(gè)換行符。
    BASE64的實(shí)現類(lèi)比較多,簡(jiǎn)單介紹2種。
   1)JDK自帶實(shí)現類(lèi)
 參見(jiàn)示例代碼Base64Test.java。
 2)bouncy castle實(shí)現類(lèi)
 參見(jiàn)示例代碼BCBase64Test.java。
二、單向加密算法
1.MD5
     message digest algorithm 5 (信息摘要算法)縮寫(xiě),廣泛用于加密和解密技術(shù),常用于文件校驗。不管文件多大,經(jīng)過(guò)MD5后都能生成唯一的MD5值,這個(gè)值的長(cháng)度都是128位,即16個(gè)字節。
   MD系列包括如下算法:
   1.md2,摘要長(cháng)度128位,16個(gè)字節,已過(guò)時(shí)
   2.md4,摘要長(cháng)度128位,16個(gè)字節,已過(guò)時(shí)
   3.md5,摘要長(cháng)度128位,16個(gè)字節
    此外,還有一種RIPEMD算法,是Hans Dobbertin等3人在md4,md5的基礎上,于1996年提出來(lái)的,顧名思義RIPEMD就是成熟md算法。算法共有4個(gè)標準128、160、256和320,其對應輸出長(cháng)度分別為16字節、20字節、32字節和40字節。不過(guò),讓人難以致信的是RIPEMD的設計者們根本就沒(méi)有真正設計256和320位這2種標準,他們只是在128位和160位的基礎上,修改了部分參數來(lái)達到輸出為256和320位的目的。所以,256位的強度和128相當,而320位的強度和160位相當。
   RIPEMD系列算法如下
   1.ripemd128,摘要長(cháng)度128位,16個(gè)字節
   2.ripemd160,摘要長(cháng)度160位,20個(gè)字節
   3.ripemd256,相當于ripemd128算法
   4.ripemd320,相當于ripemd160算法
   摘要長(cháng)度越長(cháng),破解難度也就越大,安全性也就越高。
   應用代碼參見(jiàn)示例Md5Test.java

   2.SHA
   SHA(Secure Hash Algorithm,安全散列算法),數字簽名等密碼學(xué)應用中重要的工具,被廣泛地應用于電子商務(wù)等信息安全領(lǐng)域。雖然,SHA與MD5通過(guò)碰撞法都被破解了,但是SHA仍然是公認的安全加密算法,較之MD5更為安全。SHA系列算法要求輸入消息的長(cháng)度不超過(guò)264位,1G=230位,最大長(cháng)度為234G,實(shí)際應用中不會(huì )出現超過(guò)最大限制的數據,可以不考慮消息長(cháng)度的問(wèn)題。
    SHA系列算法包括如下幾種:
    1.SHA1/SHA,摘要長(cháng)度160位,20個(gè)字節
    2.SHA256,摘要長(cháng)度256位,32個(gè)字節
    3.SHA384,摘要長(cháng)度384位,48個(gè)字節
    4.SHA512,摘要長(cháng)度512位,64個(gè)字節
    摘要長(cháng)度越長(cháng),破解難度也就越大,安全性也就越高。
    應用代碼參見(jiàn)示例ShaTest.java。
    3.HMAC  HMAC(Hash Message Authentication Code),散列消息鑒別碼,基于密鑰的Hash算法的認證協(xié)議,也叫MAC算法。消息鑒別碼實(shí)現鑒別的原理是,用公開(kāi)函數和密鑰產(chǎn)生一個(gè)固定長(cháng)度的值作為認證標識,用這個(gè)標識鑒別消息的完整性。使用一個(gè)密鑰生成一個(gè)固定大小的小數據塊,即摘要,并將其加入到消息中,然后傳輸。接收方利用與發(fā)送方共享的密鑰及摘要進(jìn)行鑒別認證等。
    應用代碼參見(jiàn)示例HmacTest.java。

    三、對稱(chēng)加密算法
    1.DES   DES-Data Encryption Standard,即數據加密算法。是IBM公司于1975年研究成功并公開(kāi)發(fā)表的。DES算法的入口參數有三個(gè):Key、Data、Mode。其中Key為8個(gè)字節共64位,是DES算法的工作密鑰;Data也為8個(gè)字節64位,是要被加密或被解密的數據;Mode為DES的工作方式,有兩種:加密或解密。?   DES算法把64位的明文輸入塊變?yōu)?4位的密文輸出塊,它所使用的密鑰也是64位。
    應用代碼參見(jiàn)示例DesSingleTest.java。
2.3DES
  3DES(即Triple DES)是DES向AES過(guò)渡的加密算法,它使用3條56位的密鑰對數據進(jìn)行三次加密。是DES的一個(gè)更安全的變形。它以DES為基本模塊,通過(guò)組合分組方法設計出分組加密算法。比起最初的DES,3DES更為安全。
   之所以稱(chēng)為3DES,是因為該算法加解密時(shí)使用3個(gè)密鑰k1,k2,k3,操作過(guò)程如下:
   加密過(guò)程:加密(使用k1)-解密(使用k2)-加密(使用k3)
   解密過(guò)程:解密(使用k3)-加密(使用k2)-解密(使用k1)
  加密/解密均操作了3次,相當于進(jìn)行了3次DES加密/解密,所以叫做3DES,當然其需要的運算時(shí)間要比DES算法多。
   實(shí)際使用時(shí),密鑰長(cháng)度需要為24個(gè)字節,這24個(gè)字節會(huì )被分為3個(gè)8字節段,k1,k2,k3均從8字節段中取56位得出。
   應用代碼參見(jiàn)示例DesedeTest.java。
3.AES
    AES是美國國家標準技術(shù)研究所NIST旨在取代DES的21世紀的加密標準。AES是一個(gè)標準,并不是具體的加密算法。
  AES標準的基本要求是,采用對稱(chēng)分組密碼體制,密鑰長(cháng)度的最少支持為128、192、256,分組長(cháng)度128位,算法應易于各種硬件和軟件實(shí)現。1998年NIST開(kāi)始AES第一輪分析、測試和征集,共產(chǎn)生了15個(gè)候選算法。1999年3月完成了第二輪AES2的分析、測試。2000年10月2日美國政府正式宣布選中比利時(shí)密碼學(xué)家Joan Daemen 和 Vincent Rijmen 提出的一種密碼算法RIJNDAEL 作為AES的標準算法,也叫RIJNDAEL算法。該算法支持密鑰長(cháng)度為128位。
    應用代碼參見(jiàn)示例AesTest.java。
4.Twofish
    Twofish?則是counterpane?公司向NIST提交的一種滿(mǎn)足AES要求的加密算法。Twofish采用128位數據塊(128?bits?block),128-192-256-bit?可變長(cháng)度密鑰。這中算法比DES和RIJNDAEL算法速度更快,靈活性更高。
    應用代碼參見(jiàn)示例TwoFishTest.java。
5.Blowfish
  Blowfish是1993年布魯斯·施奈爾(Bruce Schneier)開(kāi)發(fā)的對稱(chēng)密鑰區塊加密算法,區塊長(cháng)為64位,密鑰為1至448位的可變長(cháng)度。與DES等算法相比,其處理速度較快。因為其無(wú)須授權即可使用,作為一種自由授權的加密方式在SSH、文件加密軟件等被廣泛地使用。
   blowfish算法的密鑰位長(cháng)度位數必須為8的整數倍。
   應用代碼參見(jiàn)示例BlowFishTest.java。
6.RC2
  RC2是由著(zhù)名密碼學(xué)家Ron Rivest設計的一種傳統對稱(chēng)分組加密算法,它可作為DES算法的建議替代算法。它的輸入和輸出都是64比特。密鑰的長(cháng)度是從1字節到128字節可變。
   應用代碼參見(jiàn)示例RC2Test.java、RC2JavaTest.java。
7.RC4
   RC4算法是一種在電子信息領(lǐng)域加密的技術(shù)手段,用于無(wú)線(xiàn)通信網(wǎng)絡(luò )。RC4加密算法是大名鼎鼎的RSA三人組中的頭號人物Ron Rivest在1987年設計的密鑰長(cháng)度可變的流加密算法。該算法的速度可以達到DES加密的10倍左右。密鑰長(cháng)度1-256字節。
  RC4廣泛應用在安全套接字層(SSL)(用來(lái)保護網(wǎng)絡(luò )上傳輸的數據)和WEP(無(wú)線(xiàn)網(wǎng)絡(luò )數據保護)上。以色列魏茨曼研究所和美國思科公司的研究者發(fā)現,在使用“有線(xiàn)等效保密規則”(WEP)的無(wú)線(xiàn)網(wǎng)絡(luò )中,在特定情況下,人們可以逆轉RC4算法的加密過(guò)程,獲取密鑰,從而將己加密的信息解密。實(shí)現這一過(guò)程并不復雜,只需要使用一臺個(gè)人電腦對加密的數據進(jìn)行分析,經(jīng)過(guò)幾個(gè)小時(shí)的時(shí)間就可以破譯出信息的全部?jì)热?。所以在設置無(wú)線(xiàn)網(wǎng)的密碼加密方式時(shí)最好選擇WPA加密方式,提高安全性。
   應用代碼參見(jiàn)示例RC4Test.java。
8.RC5
   RC5分組密碼算法是1994由麻薩諸塞技術(shù)研究所的Ronald L. Rivest教授發(fā)明的,并由RSA實(shí)驗室分析。是一種非??焖偾液?jiǎn)單的算法,由塊尺寸、運算輪數和密鑰長(cháng)度參數化,這些參數能被調整,以滿(mǎn)足不同的安全需求。Bouncy Castle加密包提供塊長(cháng)度為32和642種方式。
     塊長(cháng)度:常用16,32,64位;運算輪數有效值:1-255;密鑰字節長(cháng)度有效值:1-255。
     應用代碼參見(jiàn)示例RC5Test.java、RC5JavaTest.java。
9.RC6
   RC6算法是在RC5算法的基礎上設計的,也是由麻薩諸塞技術(shù)研究所的Ronald L. Rivest教授設計,是根據AES標準在RC5算法的基礎上實(shí)現的。因此,RC6也可以指定和RC5一樣的塊長(cháng)度,運算輪數,密鑰字節長(cháng)度。
     有實(shí)驗表明:
     ①從程序的執行效率來(lái)看,無(wú)論在加密還是在解密過(guò)程中,RC5算法都要比RC6算法執行效率高。因此,在一些非常注重程序執行效率,而對數據安全性要求不是非常高的情況下,應該采用RC5算法。
     ②從程序的執行時(shí)間來(lái)看,無(wú)論在加密過(guò)程還是在解密過(guò)程中,RC5算法都要比RC6算法省時(shí)。因此,在一些對程序執行時(shí)間長(cháng)短要求很高,對數據安全性要求不是非常高的情況下,可以采用RC5算法。
     ③從程序的大小來(lái)看,無(wú)論在加密過(guò)程中還是在解密過(guò)程中,RC5算法都要比RC6算法更簡(jiǎn)潔。因此,在一些對程序所用空間大小要求很高,對數據安全性要求不是非常高的情況下,可以采用RC5算法。
     ④從安全性角度考慮,RC6算法是在RC5算法基礎之上針對RC5算法中的漏洞,主要是循環(huán)移位的位移量并不取決于要移動(dòng)次數的所有比特,通過(guò)采用引入乘法運算來(lái)決定循環(huán)移位次數的方法,對RC5算法進(jìn)行了改進(jìn),從而大大提高了RC6算法的安全性。因此,在一些對數據安全性要求很高的情況下,應該采用RC6算法。
    應用代碼參見(jiàn)示例RC6Test.java。
10.PBE
?    PBE—Password-based encryption(基于密碼加密)。其特點(diǎn)在于口令由用戶(hù)自己掌管,不借助任何物理媒體;由用戶(hù)提供初始密碼和初始鹽(也可以看做是第二個(gè)密碼),采用單向加密和對稱(chēng)加密算法混合加密,是一種簡(jiǎn)便、安全的加密方式。需要注意的是,鹽只能是64位,8個(gè)字節,不能多于或者少于64位。密碼長(cháng)度不限。
    應用代碼參見(jiàn)示例PBETest.java。
11.CAST
   CAST算法是由加拿大的Carlisle Adams(Entrust Technologies)和Stafford Tavares共同設計的。盡管CAST常常被看作算法,實(shí)際上它是用于構造算法的設計過(guò)程。  
CAST設計過(guò)程的細節已經(jīng)向密碼學(xué)界公布了,專(zhuān)家們可以評論和分析它,并且必須承受全部密碼分析的嘗試。各種各樣的研究表明CAST比DES具有更強的抗攻擊能力,而且在加密和解密上要更快一些。CAST算法比典型的DES算法大約快5-6倍。
     CAST算法是分組算法,它使用64位分組作為輸入。CAST算法的設計允許可變的密鑰長(cháng)度,變化范圍在40-256位?!癈AST算法”使用的迭代輪數由設計者決定。報告已經(jīng)顯示一個(gè)僅僅使用8輪迭代的“CAST算法”比DES(使用16輪迭代)具有稍強一些的抗攻擊能力。CAST算法已經(jīng)被美國和加拿大政府接受作為代替DES的候選算法之一。
    Bouncy Castle實(shí)現支持2種方式:
    1)Cast5,64位分組,密鑰長(cháng)度1-128位,應用代碼參見(jiàn)示例CAST5Test.java。
    2)Cast6,128位分組,密鑰長(cháng)度1-256位,應用代碼參見(jiàn)示例CAST6Test.java。
12.IDEA
  IDEA(International Data Encryption Algorithm)是瑞士的James Massey,Xuejia Lai等人提出的加密算法,在密碼學(xué)中屬于數據塊加密算法(Block Cipher)類(lèi)。IDEA使用長(cháng)度為128bit的密鑰,數據塊大小為64bit。從理論上講,IDEA屬于“強”加密算法,至今還沒(méi)有出現對該算法的有效攻擊算法。早在1990年,Xuejia Lai等人在EuroCrypt’90年會(huì )上提出了分組密碼建議PES(Proposed Encryption Standard)。在EuroCrypt’91年會(huì )上, Xuejia Lai等人又提出了PES的修正版IPES(Improved PES)。目前IPES已經(jīng)商品化,并改名為IDEA。IDEA已由瑞士的Ascom公司注冊專(zhuān)利,以商業(yè)目的使用IDEA算法必須向該公司申請許可。
   應用代碼參見(jiàn)示例IDEATest.java。
四、非對稱(chēng)加密算法
1. RSA  這種算法1978年就出現了,它是第一個(gè)既能用于數據加密也能用于數字簽名的算法。它易于理解和操作,也很流行。算法的名字以發(fā)明者的名字命名:Ron Rivest, Adi Shamir 和Leonard Adleman。

這種加密算法的特點(diǎn)主要是密鑰的變化,上文我們看到DES只有一個(gè)密鑰。相當于只有一把鑰匙,如果這把鑰匙丟了,數據也就不安全了。RSA同時(shí)有兩把鑰匙,公鑰與私鑰。同時(shí)支持數字簽名。數字簽名的意義在于,對傳輸過(guò)來(lái)的數據進(jìn)行校驗。確保數據在傳輸工程中不被修改。
     數字簽名在實(shí)際應用中需要數字證書(shū),簡(jiǎn)單介紹下Java中數字證書(shū)的生成方法。
     1).jdk安裝路徑下有一個(gè)keytool的工具程序,這個(gè)工具就是用來(lái)生成數字證書(shū)的。
     2).生成私鑰文件
     使用命令行,切換目錄到keytool所在的文件夾,執行下面的命令
     keytool -genkey -validity 36000 -alias rsatest -keyalg RSA -keysize 1024 -storetype jks -keypass 123456 -storepass 123456 -keystore d:\log\test.jks
  其中    

-genkey表示生成密鑰    

-validity指定證書(shū)有效期,這里是36000天    

-alias指定別名,這里是rsatest
-keyalg指定算法,這里是RSA
-keysize 指定生成的密鑰長(cháng)度,這里是1024
-storetype 指定私鑰文件的格式,這里是常用的jks格式,如果不指定,則默認為keystore格式
-keypass指定私鑰的訪(fǎng)問(wèn)密碼,這里是123456
-storepass指定私鑰文件的訪(fǎng)問(wèn)密碼,這里是123456   

-keystore指定存儲位置,這里是d:\log\test.jks
     3).導出公鑰證書(shū)    
     執行下面的命令:
     keytool -export -keystore d:\log\test.jks -alias rsatest -storepass 123456 -file d:\log\test.cer -rfc
     其中   

-export指定為導出操作  

-keystore指定keystore文件    

-alias指定導出keystore文件中的別名
-storepass指定私鑰訪(fǎng)問(wèn)密碼,這里是123456    

-file指向導出路徑    

-rfc以文本格式輸出,也就是以BASE64編碼輸出    

生成了數字證書(shū)文件,就可以通過(guò)證書(shū)文件進(jìn)行簽名了。
應用代碼參見(jiàn)示例RsaTest.java。
     4).CA認證
     我們自己導出的公鑰證書(shū)只能作為測試用,如果要求在互聯(lián)網(wǎng)上使用,則可以使用特殊手段偽造同樣的證書(shū),這樣是不安全的,所以如果有一個(gè)被普遍信任的機構再對我們的證書(shū)進(jìn)行一次簽名,使得我們的證書(shū)無(wú)法偽造,就會(huì )比較安全。CA機構就是要解決這個(gè)問(wèn)題的。
     CA機構,又稱(chēng)為證書(shū)授證(Certificate Authority)中心,作為電子商務(wù)交易中受信任的第三方,相當于公證人的角色。它承擔公鑰體系中公鑰的合法性檢驗的責任。CA機構使用它的證書(shū)(又稱(chēng)為根證書(shū))對用戶(hù)提交的證書(shū)進(jìn)行簽名,使得攻擊者不能偽造和篡改用戶(hù)證書(shū)。一般各種瀏覽器都會(huì )安裝主流CA機構的根證書(shū),只要是由這些機構認證過(guò)的證書(shū)都被瀏覽器信任;否則,瀏覽器將給出警告。如果瀏覽器沒(méi)有某個(gè)CA機構的根證書(shū),可以由用戶(hù)安裝。(網(wǎng)上訂過(guò)火車(chē)票的同事應該已經(jīng)知道如何安裝)
     申請CA機構的官方認證,需要提交證書(shū)申請文件,使用如下命令生成
     keytool -certreq -alias rsatest -file d:\log\test.csr -keystore d:\log\test.jks -storepass 123456 –v
     該命令會(huì )產(chǎn)生test.csr證書(shū)申請文件,把該文件提交給CA機構,就可以得到官方認證的公鑰證書(shū),多為p7b格式。
     應用代碼參見(jiàn)示例RsaTest.java。
2.DH
Diffie-Hellman算法(D-H算法),密鑰一致協(xié)議。是由公開(kāi)密鑰密碼體制的奠基人Diffie和Hellman所提出的一種思想。DH算法綜合使用了對稱(chēng)加密和非對稱(chēng)加密技術(shù)。DH算法的交互流程如下:
1.甲方構建密鑰對兒,將公鑰公布給乙方,將私鑰保留;雙方約定數據加密算法;乙方通過(guò)甲方公鑰構建密鑰對兒,將公鑰公布給甲方,將私鑰保留。?     2.甲方使用私鑰、乙方公鑰、約定數據加密算法構建本地密鑰,然后通過(guò)本地密鑰加密數據,發(fā)送給乙方加密后的數據;乙方使用私鑰、甲方公鑰、約定數據加密算法構建本地密鑰,然后通過(guò)本地密鑰對數據解密。?     3.乙方使用私鑰、甲方公鑰、約定數據加密算法構建本地密鑰,然后通過(guò)本地密鑰加密數據,發(fā)送給甲方加密后的數據;甲方使用私鑰、乙方公鑰、約定數據加密算法構建本地密鑰,然后通過(guò)本地密鑰對數據解密。
應用代碼參見(jiàn)示例DhTest.java。

3.DSA  
DSA-Digital Signature Algorithm 是Schnorr和ElGamal簽名算法的變種,被美國NIST作為DSS(DigitalSignature Standard)。簡(jiǎn)單的說(shuō),這是一種更高級的驗證方式,用作數字簽名。不單單只有公鑰、私鑰,還有數字簽名。私鑰加密生成數字簽名,公鑰驗證數據及簽名。如果數據和簽名不匹配則認為驗證失??!數字簽名的作用就是校驗數據在傳輸過(guò)程中不被修改。
DSA算法也可以使用文件形式的數字證書(shū),制作方法同RSA證書(shū),如:
keytool -genkey -validity 36000 -alias dsatest -keyalg DSA -keysize 1024 -storetype jks -keypass 123456 -storepass 123456 -keystore d:\log\dsatest.jks
導出證書(shū):
keytool -export -keystore d:\log\dsatest.jks -alias dsatest -storepass 123456 -file d:\log\dsatest.cer -rfc
應用代碼參見(jiàn)示例DsaTest.java。
4.ECC   ECC(Elliptic Curves Cryptography),橢圓曲線(xiàn)密碼編碼學(xué),是目前已知的公鑰體制中,對每比特所提供加密強度最高的一種體制。在軟件注冊保護方面起到很大的作用,一般的序列號通常由該算法產(chǎn)生。
ECC算法在jdk1.5后加入支持,目前僅僅只能完成密鑰的生成與解析。 如果想要獲得ECC算法實(shí)現,需要調用硬件完成加密/解密(ECC算法相當耗費資源,如果單純使用CPU進(jìn)行加密/解密,效率低下)。涉及到Java Card領(lǐng)域,PKCS#11。

附:安裝bouncy castle算法包
  在java中實(shí)現很多加密算法的時(shí)候都需要使用到bouncy castle的算法包,可以使用如下代碼添加該包提供的功能:
 Security.addProvider(new BouncyCastleProvider());
    為了方便使用,該算法包可以手工配置到j(luò )re環(huán)境中,簡(jiǎn)單介紹下配置方法。
 1.獲取算法包
      bouncy castle官網(wǎng):www.bouncycastle.org/,根據所使用的jdk,到該網(wǎng)站獲取對應版本的jar包。我用的是jdk1.4,用的是bcprov-jdk14-139.jar。
 2.把bcprov-jdk14-139.jar復制到j(luò )dk安裝目錄\jre\lib\ext目錄下

 3.編輯jdk安裝目錄\jre\lib\security下java.security文件
  使用編輯工具打開(kāi)java.security文件后找到如下片段:    
security.provider.1=sun.security.provider.Sun
security.provider.2=com.sun.net.ssl.internal.ssl.Provider
security.provider.3=com.sun.rsajca.Provider
security.provider.4=com.sun.crypto.provider.SunJCE
security.provider.5=sun.security.jgss.SunProvide
在最后聲明security.provider的一行代碼之后再添加一行:
rsecurity.provider.6=org.bouncycastle.jce.provider.BouncyCastleProvider
6,是由前面一行的數值加1得到的;org.bouncycastle.jce.provider.BouncyCastleProvider就是bouncy castle的算法提供者,jdk在前5個(gè)算法提供者中都找不到相應的算法時(shí)就會(huì )到該類(lèi)中查找。

4.可以使用bouncy castle算法包了。

小知識之加密算法:
數據加密的基本過(guò)程就是對原來(lái)為明文的文件或數據按某種算法進(jìn)行處理,使其成為不可讀的一段代碼,通常稱(chēng)為“密文”,使其只能在輸入相應的密鑰之后才能顯示出本來(lái)內容,通過(guò)這樣的途徑來(lái)達到保護數據不被非法人竊取、閱讀的目的。 該過(guò)程的逆過(guò)程為解密,即將該編碼信息轉化為其原來(lái)數據的過(guò)程。

原文出自:http://willwen.iteye.com/blog/1976770

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
國密SM算法有哪些
安全套接層SSL協(xié)議簡(jiǎn)介
加密技術(shù)及流行加密算法
openssl之EVP系列之3---EVP_Encrypt支持的對稱(chēng)加密算法列表
信息安全題目整理(1)
非對稱(chēng)加密rsa算法
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久