Advertisement
Guest User

Creating a public key in Scala and decoding it

a guest
Feb 20th, 2011
388
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 5.42 KB | None | 0 0
  1. $ scala
  2. Welcome to Scala version 2.8.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_22).
  3. Type in expressions to have them evaluated.
  4. Type :help for more information.
  5.  
  6. scala> import java.security.spec._
  7. import java.security.spec._
  8.  
  9. scala> import java.math.BigInteger
  10. import java.math.BigInteger
  11.  
  12. scala> val keySpec = new RSAPublicKeySpec(new BigInteger("""E394D1B3CE644D809D8A85B6816E22F6C7741B9A294D2E4CB477733C16FEC0C9B346B26078944148114234393CF634A742947E264D1D22A55CF6B5E98ADACD897B9896FCDE5836008BBBC8463057F67848F5A31B41B032E4765CD546A1DD7DE3FC2423C88EAC72332AC9174E0BCA4E9FE973D90C3C622617C0CEA69B45C01CFBA90F247C26E1BCE419A251BC46287F7B00EDC34B538066CC2A285BB99B423012942768D619D261C1B668EC847E56CCF621D8B15E860FC2109317A8261F7AF894F0490703AFF323E88EAD45C4F6B8B34684D81575BF2A78AC842FD12AAE5D8EE52C9858087BE3EB8C8C7A0CA9C7ED05EBF411145E20D654A70118D586C25332A9""",16), new BigInteger("65537"))
  13. keySpec: java.security.spec.RSAPublicKeySpec = java.security.spec.RSAPublicKeySpec@2be44538
  14.  
  15. scala> import java.security.KeyFactory;
  16. import java.security.KeyFactory
  17.  
  18. scala> import java.security.interfaces._
  19. import java.security.interfaces._
  20.  
  21. scala> val keyFactory = KeyFactory.getInstance("RSA")
  22. keyFactory: java.security.KeyFactory = java.security.KeyFactory@6dbe2b55
  23.  
  24. scala> val rsaKey = keyFactory.generatePublic(keySpec).asInstanceOf[RSAPublicKey]
  25. rsaKey: java.security.interfaces.RSAPublicKey =
  26. Sun RSA public key, 2048 bits
  27.   modulus: 28729480685212217779416650412446768800651492709725591716996840987307888120657885453372969093053671949570544151559883722036287097066487589718156070641953378245071624155178727378250963122836286047876136458955677770890434823264660866097372328266763265592260883407018628876240452440952891915884810609037124747332512998958468509645605415895312174336772331803192867536480230098726830721353033047710498621493613812162917344469821118896236728389703064784651344596517325426883584815874085587511659392925015509498994370691104234990312626748054928427086294229917844549141913076135327704746517570754445371951240527765889315189417
  28.   public exponent: 65537
  29.  
  30. scala> rsaKey.getFormat
  31. res0: java.lang.String = X.509
  32.  
  33. scala> rsaKey.getEncoded
  34. res1: Array[Byte] = Array(48, -126, 1, 34, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1, 1, 5, 0, 3, -126, 1, 15, 0, 48, -126, 1, 10, 2, -126, 1, 1, 0, -29, -108, -47, -77, -50, 100, 77, -128, -99, -118, -123, -74, -127, 110, 34, -10, -57, 116, 27, -102, 41, 77, 46, 76, -76, 119, 115, 60, 22, -2, -64, -55, -77, 70, -78, 96, 120, -108, 65, 72, 17, 66, 52, 57, 60, -10, 52, -89, 66, -108, 126, 38, 77, 29, 34, -91, 92, -10, -75, -23, -118, -38, -51, -119, 123, -104, -106, -4, -34, 88, 54, 0, -117, -69, -56, 70, 48, 87, -10, 120, 72, -11, -93, 27, 65, -80, 50, -28, 118, 92, -43, 70, -95, -35, 125, -29, -4, 36, 35, -56, -114, -84, 114, 51, 42, -55, 23, 78, 11, -54, 78, -97, -23, 115, -39, 12, 60, 98, 38, 23, -64, -50, -90, -101, 69, -64, 28, -5, -87, 15, 36, 124, 38, -31, -68, -28, 25, -94,...
  35. scala> rsaKey
  36. res2: java.security.interfaces.RSAPublicKey =
  37. Sun RSA public key, 2048 bits
  38.   modulus: 28729480685212217779416650412446768800651492709725591716996840987307888120657885453372969093053671949570544151559883722036287097066487589718156070641953378245071624155178727378250963122836286047876136458955677770890434823264660866097372328266763265592260883407018628876240452440952891915884810609037124747332512998958468509645605415895312174336772331803192867536480230098726830721353033047710498621493613812162917344469821118896236728389703064784651344596517325426883584815874085587511659392925015509498994370691104234990312626748054928427086294229917844549141913076135327704746517570754445371951240527765889315189417
  39.   public exponent: 65537
  40.  
  41. scala> rsaKey.getClass
  42. res3: java.lang.Class[_] = class sun.security.rsa.RSAPublicKeyImpl
  43.  
  44. scala> import sun.misc.BASE64Encoder
  45. import sun.misc.BASE64Encoder
  46.  
  47. scala> val b64enc = new BASE64Encoder()
  48. b64enc: sun.misc.BASE64Encoder = sun.misc.BASE64Encoder@520b368f
  49.  
  50. scala> b64enc.encode( rsaKey.getEncoded )
  51. res4: java.lang.String =
  52. MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA45TRs85kTYCdioW2gW4i9sd0G5opTS5M
  53. tHdzPBb+wMmzRrJgeJRBSBFCNDk89jSnQpR+Jk0dIqVc9rXpitrNiXuYlvzeWDYAi7vIRjBX9nhI
  54. 9aMbQbAy5HZc1Uah3X3j/CQjyI6scjMqyRdOC8pOn+lz2Qw8YiYXwM6mm0XAHPupDyR8JuG85Bmi
  55. UbxGKH97AO3DS1OAZswqKFu5m0IwEpQnaNYZ0mHBtmjshH5WzPYh2LFehg/CEJMXqCYfeviU8EkH
  56. A6/zI+iOrUXE9rizRoTYFXW/KnishC/RKq5djuUsmFgIe+PrjIx6DKnH7QXr9BEUXiDWVKcBGNWG
  57. wlMyqQIDAQAB
  58.  
  59. scala> import sun.security.util.DerValue
  60. import sun.security.util.DerValue
  61.  
  62. scala> val der = new DerValue( rsaKey.getEncoded )
  63. der: sun.security.util.DerValue = [DerValue, tag = 48, length = 290]
  64.  
  65. scala> import sun.security.x509.X509Key
  66. import sun.security.x509.X509Key
  67.  
  68. scala> val newKey = X509Key.parse(der)
  69. newKey: java.security.PublicKey =
  70. Sun RSA public key, 2048 bits
  71.   modulus: 28729480685212217779416650412446768800651492709725591716996840987307888120657885453372969093053671949570544151559883722036287097066487589718156070641953378245071624155178727378250963122836286047876136458955677770890434823264660866097372328266763265592260883407018628876240452440952891915884810609037124747332512998958468509645605415895312174336772331803192867536480230098726830721353033047710498621493613812162917344469821118896236728389703064784651344596517325426883584815874085587511659392925015509498994370691104234990312626748054928427086294229917844549141913076135327704746517570754445371951240527765889315189417
  72.   public exponent: 65537
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement