JAVA加密與解密:java
消息摘要算法:MD,SHA,MAC
對稱加密算法:DES,3DES,AES
非對稱加密算法:RSA
簽名算法:RSA,DSA
node
消息摘要與簽名的區別:消息摘要保證數據完整性,沒有被篡改;簽名確保消息是由發送方發送;簽名算法 中也會涉及的摘要;簽名算法實際上就是消息摘要與非對稱加密算法的合體;
簽名與加密:公鑰加密,私鑰解密(通常業務場景下如此);私鑰簽名,公鑰驗籤
算法
DES:
密鑰長度56-64位
使用方式:apache
1)發送方構建密鑰,並公佈密鑰安全
2)發送方使用密鑰對數據加密,併發送加密數據服務器
3)接收方使用密鑰對接收數據解密併發
AES:
解決3DES加密效率低,速度慢的問題,成爲DES算法的替代者
使用方式同DES工具
RAS:
非對稱加密算法post
jdk加密相關jar包以及package:
編碼
rt.jar: java.security.*包,定義了消息摘要算法的實現(不包括mac算法)以及加解密算法的使用接口
jce.jar:java.crypto.*包,DES,3DES以及AES中使用較多,RSA中會用到Cipher類。其中包含了DES,3DES以及AES的實現;比較經常使用的類Cipher,KeyGenerator,SecretKey,Key,SecretKeyFactory
rt.jar:java.security.cert.*包,提供用於解析和管理證書的類和接口,如Certificate以及CertificateFactory
Bouncy Castle:加密組件,安全提供者,javajce的補充(如java6不支持MD4,SSH-224,但bc支持),以及一些工具類,如Base64編碼(UrlBase64類)以及十六進制編碼(Hex類)。
commons-codex:apache軟件,主要用於編碼格式轉換,如Base64,二進制,十六進制,url編碼等,而且對java原生消息摘要算法進行了封裝。如Base64類,Hex類;DigestUtils工具類提供了MD5和SHA系列算法實現,對MessageDigest進行了封裝。
MD,SHA以及MAC等消息摘要的區別?
SHA算法基於MD4算法基礎上,做爲MD算法繼任者,成爲新一代的消息摘要算法。主要不一樣之處在於摘要長度,SHA算法的摘要長度更長,安全性更高。
MAC算法又叫作安全信息摘要算法,與SHA以及MD不一樣的是,使用MAC作摘要,發送方須要構建密鑰併發送密鑰給接收方,接收方使用密鑰對數據作摘要並與發送方發送的摘要對比;而MD以及SHA不涉及密鑰;
數字證書(cer,pfx,der,p7b,p7c,p10,p12,csr)後綴:
當看到cer或pfx結尾的文件,就是數字證書;證書能夠做爲公鑰的載體來傳播;證書分爲CA證書和自簽名證書;CA證書是權威認證,自簽名證書是本身頒發給本身(本身既是申請者又是頒發者)。
keyTool證書管理:能夠經過jdk的bin目錄下KeyTool工具生成數字證書,並導出證書文件;
OpenSSL證書管理:OpenSSL功能遠勝於KeyTool,能夠用於根證書、服務器證書和客戶證書的管理。
轉:blog.csdn.net/shenyongjun… PKCS 全稱是 Public-Key Cryptography Standards ,是由 RSA 實驗室與其它安全系統開發商爲促進公鑰密碼的發展而制訂的一系列標準,PKCS 目前共發佈過 15 個標準。 經常使用的有: PKCS#7 Cryptographic Message Syntax Standard PKCS#10 Certification Request Standard PKCS#12 Personal Information Exchange Syntax Standard X.509是常見通用的證書格式。全部的證書都符合爲Public Key Infrastructure (PKI) 制定的 ITU-T X509 國際標準。 PKCS#7 經常使用的後綴是: .P7B .P7C .SPC PKCS#12 經常使用的後綴有: .P12 .PFX X.509 DER 編碼(ASCII)的後綴是: .DER .CER .CRT X.509 PAM 編碼(Base64)的後綴是: .PEM .CER .CRT .cer/.crt是用於存放證書,它是2進制形式存放的,不含私鑰。 .pem跟crt/cer的區別是它以Ascii來表示。 pfx/p12用於存放我的證書/私鑰,他一般包含保護密碼,2進制方式 p10是證書請求 p7r是CA對證書請求的回覆,只用於導入 p7b以樹狀展現證書鏈(certificate chain),同時也支持單個證書,不含私鑰。 —————- 小美注: der,cer文件通常是二進制格式的,只放證書,不含私鑰 crt文件多是二進制的,也多是文本格式的,應該以文本格式居多,功能同der/cer pem文件通常是文本格式的,能夠放證書或者私鑰,或者二者都有 pem若是隻含私鑰的話,通常用.key擴展名,並且能夠有密碼保護 pfx,p12文件是二進制格式,同時含私鑰和證書,一般有保護密碼 怎麼判斷是文本格式仍是二進制?用記事本打開,若是是規則的數字字母,如 —–BEGIN CERTIFICATE—– MIIE9jCCA96gAwIBAgIQVXD9d9wgivhJM//a3VIcDjANBgkqhkiG9w0BAQUFADBy —–END CERTIFICATE—– 就是文本的,上面的BEGIN CERTIFICATE,說明這是一個證書 若是是—–BEGIN RSA PRIVATE KEY—–,說明這是一個私鑰 文本格式的私鑰,也可能有密碼保護 文本格式怎麼變成二進制? 從程序角度來講,去掉先後的—-行,剩下的去掉回車,用base64解碼,就獲得二進制了 不過通常都用命令行openssl完成這個工做 ————— 一 用openssl建立CA證書的RSA密鑰(PEM格式): openssl genrsa -des3 -out ca.key 1024 二用openssl建立CA證書(PEM格式,假若有效期爲一年): openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config openssl.cnf openssl是能夠生成DER格式的CA證書的,最好用IE將PEM格式的CA證書轉換成DER格式的CA證書。 三 x509到pfx pkcs12 -export –in keys/client1.crt -inkey keys/client1.key -out keys/client1.pfx 四 PEM格式的ca.key轉換爲Microsoft能夠識別的pvk格式。 pvk -in ca.key -out ca.pvk -nocrypt -topvk 五 PKCS#12 到 PEM 的轉換 openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem 驗證 openssl pkcs12 -clcerts -nokeys -in cert.p12 -out cert.pem 六 從 PFX 格式文件中提取私鑰格式文件 (.key) openssl pkcs12 -in mycert.pfx -nocerts -nodes -out mycert.key 七 轉換 pem 到到 spc openssl crl2pkcs7 -nocrl -certfile venus.pem -outform DER -out venus.spc 用 -outform -inform 指定 DER 仍是 PAM 格式。例如: openssl x509 -in Cert.pem -inform PEM -out cert.der -outform DER 八 PEM 到 PKCS#12 的轉換, openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem