第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么已經(jīng)獲取了私鑰了還要用keyfactory?

為什么已經(jīng)獲取了私鑰了還要用keyfactory?

正在回答

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));
????}
}

代碼簡潔很多。自己寫的時候沒必要像老師那么繁瑣。但是實際項目中就不一定了。


0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

為什么已經(jīng)獲取了私鑰了還要用keyfactory?

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號