課程
/后端開發(fā)
/Java
/JAVA實(shí)現(xiàn)非對(duì)稱加密
為什么已經(jīng)獲取了私鑰了還要用keyfactory?
2016-10-25
源自:JAVA實(shí)現(xiàn)非對(duì)稱加密 3-1
正在回答
老師的意思的是密鑰的轉(zhuǎn)換,實(shí)際上并不需要轉(zhuǎn)換,也不需要重新生成keyfactory。可能是實(shí)際項(xiàng)目中一般會(huì)這樣,因?yàn)閷?shí)際接受方和發(fā)送方并不知道對(duì)方的密鑰的encoded format(編碼格式),所以需要轉(zhuǎn)換成自己使用encoded format。例如本節(jié)里面的X509...之類的。而KeyFactory就是轉(zhuǎn)換格式后重新生成私鑰,公鑰。
也可以用下面的代碼,不需要轉(zhuǎn)換,理論上是可以的:
package?com.imooc.RSA; import?org.apache.commons.codec.binary.Hex; import?javax.crypto.Cipher; import?java.security.KeyPair; import?java.security.KeyPairGenerator; /** ?*?Created?by?anyuan?on?2016/11/23. ?*/ public?class?ImoocRSA?{ ????public?static?final?String?src?=?"imooc?security?rsa"; ????public?static?void?main(String[]?args)?throws?Exception?{ ????????jdkRSA(); ????} ????public?static?void?jdkRSA()?throws?Exception?{ ????????//初始化密鑰 ????????KeyPairGenerator?keyPairGenerator?=?KeyPairGenerator.getInstance("RSA"); ????????keyPairGenerator.initialize(512);//512~65532 ????????KeyPair?keyPair?=?keyPairGenerator.generateKeyPair(); ????????//私鑰加密,公鑰解密 ????????//下面是產(chǎn)生密鑰工廠,用公鑰或者私鑰產(chǎn)生密鑰工廠,進(jìn)而產(chǎn)生密鑰。原則上這里可以省略.密鑰轉(zhuǎn)換也可以省略 //????????KeyFactory?keyFactory?=?KeyFactory.getInstance("RSA"); //????????PrivateKey?privateKey?=?keyFactory.generatePrivate((KeySpec)?keyPair.getPrivate()); ????????Cipher?cipher?=?Cipher.getInstance("RSA"); ????????cipher.init(Cipher.ENCRYPT_MODE,?keyPair.getPrivate()); ????????byte[]?result?=?cipher.doFinal(src.getBytes()); ????????System.out.println("**私鑰加密,公鑰解密**"); ????????System.out.println("加密:"?+?Hex.encodeHexString(result)); ????????cipher.init(Cipher.DECRYPT_MODE,?keyPair.getPublic()); ????????result?=?cipher.doFinal(result); ????????System.out.println("解密:"?+?new?String(result)); ????} }
代碼簡(jiǎn)潔很多。自己寫的時(shí)候沒必要像老師那么繁瑣。但是實(shí)際項(xiàng)目中就不一定了。
舉報(bào)
非對(duì)稱加密算法在JAVA中的實(shí)現(xiàn),了解非對(duì)稱加密算法應(yīng)用場(chǎng)景
1 回答私鑰加密,公鑰解密,這有什么實(shí)際意義?
2 回答發(fā)送方本地秘鑰指發(fā)送方的私鑰嗎
1 回答不是用對(duì)方的公鑰加密 對(duì)方收到信息后再用自己的私鑰解密嗎
2 回答RSA字符串秘鑰如何使用?
2 回答Moocer老師請(qǐng)問下出于什么考慮將密鑰長(zhǎng)度的范圍定為512~1024呢?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2016-11-23
老師的意思的是密鑰的轉(zhuǎn)換,實(shí)際上并不需要轉(zhuǎn)換,也不需要重新生成keyfactory。可能是實(shí)際項(xiàng)目中一般會(huì)這樣,因?yàn)閷?shí)際接受方和發(fā)送方并不知道對(duì)方的密鑰的encoded format(編碼格式),所以需要轉(zhuǎn)換成自己使用encoded format。例如本節(jié)里面的X509...之類的。而KeyFactory就是轉(zhuǎn)換格式后重新生成私鑰,公鑰。
也可以用下面的代碼,不需要轉(zhuǎn)換,理論上是可以的:
代碼簡(jiǎn)潔很多。自己寫的時(shí)候沒必要像老師那么繁瑣。但是實(shí)際項(xiàng)目中就不一定了。