File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Security and the fly likes RSA Cipher Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login


JavaRanch » Java Forums » Engineering » Security
Reply Bookmark "RSA Cipher" Watch "RSA Cipher" New topic
Author

RSA Cipher

John Carr
Greenhorn

Joined: Jan 16, 2010
Posts: 17
I want to pass messages to and from the server/client and use a RSA cipher, but I can't figure out how to generate a pair, and pass the public key to the other, and then use it.

I am trying to modify this code that I found via Google:
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 32421
The code already generates a key pair, and extracts both private and public key, no? The data to be used can be gotten from either key by calling the "getEncoded" method.


Android appsImageJ pluginsJava web charts
John Carr
Greenhorn

Joined: Jan 16, 2010
Posts: 17
I know, but I want to specifically set a public key that coincides with the private key the server generates.

I can't figure out how to set a key...
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 32421
Once you have the bytes that make up a key, you can create a Key object from it like this:
John Carr
Greenhorn

Joined: Jan 16, 2010
Posts: 17
Well Ulf, I tried fiddling with it for a bit, and googling the error, and I can't seem to get it...

Here is what I have atm:


And here is the error:
Exception in thread "main" java.security.InvalidKeyException: Neither a public nor a private key
at sun.security.rsa.RSAKeyFactory.engineTranslateKey(RSAKeyFactory.java:193)
at sun.security.rsa.RSAKeyFactory.toRSAKey(RSAKeyFactory.java:111)
at com.sun.crypto.provider.RSACipher.init(RSACipher.java:260)
at com.sun.crypto.provider.RSACipher.engineInit(RSACipher.java:205)
at javax.crypto.Cipher.init(Cipher.java:986)
at javax.crypto.Cipher.init(Cipher.java:935)
at TestRsa2.encrypt(TestRsa2.java:32)
at TestRsa2.main(TestRsa2.java:70)
greg stark
Ranch Hand

Joined: Aug 10, 2006
Posts: 217
Ulf Dittmer wrote:Once you have the bytes that make up a key, you can create a Key object from it like this:


That is for a secret (symmetric) key. For a public key, you create an X509EncodedKeySpec from the result of PublicKey.getEncoded(). You supply the X509EncodedKeySpec instance to a KeyFactory instance. Using the getInstance() method to get an RSA instance. Then use the generatePublic() method and supply the X509EncodedKeySpec to it to get the public key.


Nice to meet you.
John Carr
Greenhorn

Joined: Jan 16, 2010
Posts: 17
Thanks Greg, I finally got it to work.
 
 
subject: RSA Cipher
 
MyEclipse, The Clear Choice

cast iron skillet 49er

more from paul wheaton's glorious empire of web junk: cast iron skillet diatomaceous earth rocket mass heater sepp holzer raised garden beds raising chickens lawn care CFL flea control missoula heat permaculture