課程
/后端開發(fā)
/Java
/JAVA實現(xiàn)非對稱加密
為什么已經(jīng)獲取了私鑰了還要用keyfactory?
2016-10-25
源自:JAVA實現(xiàn)非對稱加密 3-1
正在回答
老師的意思的是密鑰的轉(zhuǎn)換,實際上并不需要轉(zhuǎn)換,也不需要重新生成keyfactory。可能是實際項目中一般會這樣,因為實際接受方和發(fā)送方并不知道對方的密鑰的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)生密鑰工廠,進而產(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)); ????} }
代碼簡潔很多。自己寫的時候沒必要像老師那么繁瑣。但是實際項目中就不一定了。
舉報
非對稱加密算法在JAVA中的實現(xiàn),了解非對稱加密算法應(yīng)用場景
1 回答私鑰加密,公鑰解密,這有什么實際意義?
2 回答發(fā)送方本地秘鑰指發(fā)送方的私鑰嗎
1 回答不是用對方的公鑰加密 對方收到信息后再用自己的私鑰解密嗎
2 回答RSA字符串秘鑰如何使用?
2 回答Moocer老師請問下出于什么考慮將密鑰長度的范圍定為512~1024呢?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-11-23
老師的意思的是密鑰的轉(zhuǎn)換,實際上并不需要轉(zhuǎn)換,也不需要重新生成keyfactory。可能是實際項目中一般會這樣,因為實際接受方和發(fā)送方并不知道對方的密鑰的encoded format(編碼格式),所以需要轉(zhuǎn)換成自己使用encoded format。例如本節(jié)里面的X509...之類的。而KeyFactory就是轉(zhuǎn)換格式后重新生成私鑰,公鑰。
也可以用下面的代碼,不需要轉(zhuǎn)換,理論上是可以的:
代碼簡潔很多。自己寫的時候沒必要像老師那么繁瑣。但是實際項目中就不一定了。