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