获取可用密码算法的列表
您如何學(xué)習(xí)可用的密碼算法? Java規(guī)范列出了幾種必需的密碼,摘要等,但是提供程序通常提供的不止這些。
幸運(yùn)的是,這很容易了解我們系統(tǒng)上的可用內(nèi)容。
系統(tǒng)管理員可以覆蓋標(biāo)準(zhǔn)密碼庫(kù)。 在實(shí)踐中,最安全的方法是始終加載自己的密碼庫(kù)并如上所述手動(dòng)注冊(cè),或者最好在創(chuàng)建新對(duì)象時(shí)將其作為可選參數(shù)傳遞。
演算法
有幾十種標(biāo)準(zhǔn)算法。 我們最可能感興趣的是:
對(duì)稱密碼
- KeyGenerator –創(chuàng)建對(duì)稱密鑰
- SecretKeyFactor –在對(duì)稱密鑰和原始字節(jié)之間轉(zhuǎn)換
- 密碼 -加密密碼
- AlgorithmParameters –算法參數(shù)
- AlgorithmParameterGernerator –算法參數(shù)
非對(duì)稱密碼
- KeyPairGenerator –創(chuàng)建公用/專用密鑰
- KeyFactor –在密鑰對(duì)和原始字節(jié)之間轉(zhuǎn)換
- 密碼 -加密密碼
- 簽名 –數(shù)字簽名
- AlgorithmParameters –算法參數(shù)
- AlgorithmParameterGernerator –算法參數(shù)
文摘
- MessageDigest –摘要(MD5,SHA1等)
- Mac – HMAC。 就像消息摘要一樣,但也需要加密密鑰,因此攻擊者無(wú)法偽造它
證書(shū)和密鑰庫(kù)
- 密鑰庫(kù) – JKS,PKCS等
- CertStore –類似于密鑰庫(kù),但僅存儲(chǔ)證書(shū)。
- CertificateFactory –在數(shù)字證書(shū)和原始字節(jié)之間轉(zhuǎn)換。
重要的是要記住,大多數(shù)算法都是為了向后兼容而提供的,不應(yīng)在未開(kāi)發(fā)的領(lǐng)域中使用。 在我撰寫(xiě)本文時(shí),普遍接受的建議是:
- 使用AES的變體。 僅在絕對(duì)確定要加密一個(gè)塊大小(16字節(jié))的數(shù)據(jù)時(shí),才使用AES-ECB。
- 即使您使用的是AES-CBC,也應(yīng)始終使用良好的隨機(jī)IV。 不要使用相同的IV或容易預(yù)測(cè)的IV。
- 在非對(duì)稱密鑰中不要使用少于2048位。
- 使用SHA-256或更高版本。 MD-5被視為已損壞,SHA-1將在不久的將來(lái)被視為已損壞。
- 使用PBKDF2WithHmacSHA1從密碼/密碼短語(yǔ)創(chuàng)建AES密鑰。 (另請(qǐng)參見(jiàn)創(chuàng)建基于密碼的加密密鑰 。)
有些人可能想要使用其他AES候選密碼之一(例如, twofish )。 這些密碼可能是安全的,但是如果與其他方共享文件,則可能會(huì)遇到問(wèn)題,因?yàn)樗鼈儾辉诒匦璧拿艽a套件中。
當(dāng)心美國(guó)出口限制
最后,重要的是要記住,由于美國(guó)的出口限制,標(biāo)準(zhǔn)的Java發(fā)行版已嚴(yán)重受損。 您可以通過(guò)在系統(tǒng)上安裝標(biāo)準(zhǔn)的僅限美國(guó)的文件來(lái)獲得全部功能,但是對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),要驗(yàn)證這一點(diǎn)已經(jīng)完成就很難了。 實(shí)際上,即使不是大多數(shù)人,許多人也會(huì)使用BouncyCastle之類的第三方加密庫(kù)。 許多沒(méi)有經(jīng)驗(yàn)的開(kāi)發(fā)人員對(duì)此一無(wú)所知,并無(wú)意中使用了殘缺的功能。
翻譯自: https://www.javacodegeeks.com/2014/08/getting-a-list-of-available-cryptographic-algorithms.html
總結(jié)
以上是生活随笔為你收集整理的获取可用密码算法的列表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 网盘资源搜索神器(网盘 for linu
- 下一篇: 在CloudBees上开发,测试和部署独