是否可以將BigInteger轉換爲接口密鑰?BigInteger to Key
http://docs.oracle.com/javase/7/docs/api/java/security/Key.html
我想實現的RSA算法的,和我產生了自己的密鑰,而不是使用的KeyPairGenerator操作系統。但是,使用密碼加密我的消息時,需要一個密鑰。我曾嘗試將BigInteger投射到Key,但這沒有奏效。
是否可以將BigInteger轉換爲接口密鑰?BigInteger to Key
http://docs.oracle.com/javase/7/docs/api/java/security/Key.html
我想實現的RSA算法的,和我產生了自己的密鑰,而不是使用的KeyPairGenerator操作系統。但是,使用密碼加密我的消息時,需要一個密鑰。我曾嘗試將BigInteger投射到Key,但這沒有奏效。
下面是從模數和公開指數創建RSAPublicKey
實現的示例。
KeyFactory factory rsa = KeyFactory.getInstance("RSA");
BigInteger n = ... ; /* modulus */
BigInteger e = ... ; /* public exponent */
RSAPublicKeySpec spec = new RSAPublicKeySpec(n, e);
RSAPublicKey pub = (RSAPublicKey) factory.generatePublic(spec);
Cipher enc = Cipher.getInstance("RSA");
enc.init(Cipher.WRAP_MODE, pub);
byte[] encryptedContentKey = enc.wrap(secret);
的RSA密鑰對是私有密鑰和公鑰,其中的每一個包括在BigInteger
對象的形式的幾個數字。一對中的每個鍵共享相同的「模數」。公鑰有一個「公開指數」,私鑰有一個「私人指數」。爲了計算效率,私鑰通常以「中國剩餘定理形式」存儲,其中包括附加數字。
如果您正在加密,您需要將PublicKey
傳遞給Cipher
的init()
方法。
如果您正在解密,您需要將PrivateKey
傳遞給Cipher
的init()
方法。
(一些供應商允許你使用一個Cipher
執行簽名操作,並使用正確的填充,當你扭轉鑰匙,但是不建議這樣做或必要時Signature
類表達你的意圖更加清晰。)
是的,這是可能的。 – 2012-04-22 19:11:22
道歉 - 我已經添加了更多的細節問題。 – Joseph 2012-04-22 19:15:26
當然,'Key'不是'BigInteger',所以你不能投。用Java進行轉換不是轉換運算符(除了原始類型)。你需要知道實現你想要實例化的'Key'的具體類,這可能只是你研究的開始。 – 2012-04-22 19:29:33