加密

不可逆加密:MD5

輸入明文后由系統(tǒng)直接經(jīng)過加密算法處理成密文,無法根據(jù)密文推算出明文

對(duì)稱加密:AES

雙方都持有密鑰
通過一個(gè)密鑰進(jìn)行加密和解密
明文 <-> 密鑰 <-> 密文

非對(duì)稱加密:RSA

  • 原理
    生成私鑰,公鑰對(duì)
    一方都持有私鑰,一方持有公鑰,泄露風(fēng)險(xiǎn)小

你只要想:既然是加密,那肯定是不希望別人知道我的消息,所以只有我才能解密,所以可得出公鑰負(fù)責(zé)加密,私鑰負(fù)責(zé)解密;

同理,既然是簽名,那肯定是不希望有人冒充我發(fā)消息,只有我才能發(fā)布這個(gè)簽名,所以可得出私鑰負(fù)責(zé)簽名,公鑰負(fù)責(zé)驗(yàn)證。

RSA公鑰加密對(duì)填充有“ 0”和一串隨機(jī)位的消息進(jìn)行加密。
在此過程中,通過加密哈希和XOR運(yùn)算將隨機(jī)字符串“隱藏”在密文中。
解密時(shí),RSA解密從密文中恢復(fù)隨機(jī)字符串,并使用它來恢復(fù)消息。
這就是為什么同一文本消息使用相同公鑰多次加密會(huì)得到不同的結(jié)果的原因

  • 使用
    通過字節(jié)數(shù)組(二進(jìn)制文件)得到key對(duì)象
    publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(byteArray));
    通過cipher對(duì)象加密
    cipher.init(Cipher.ENCRYPT_MODE, pubKey)

通過字節(jié)數(shù)組(二進(jìn)制文件)密鑰得到string形式的密鑰
new String(Base64.encodeBase64(byteArray),CharacterEncodings.CHARSET_UTF_8)

string形式的密鑰轉(zhuǎn)換為字節(jié)數(shù)組(二進(jìn)制文件)
byte[] decoded = Base64.decodeBase64(publicKeyString);
PublicKey pubKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded));

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容