在Java中处理PublicKey对象

时间:2014-05-16 18:56:28

标签: java rsa

首先,感谢您的时间,还有一些耐心,因为我是这个主题的菜鸟...... 我有一个PublicKey对象:

Sun RSA public key, 2048 bits
  modulus: 18077203024541758363929020498733829335491380051700307922133794962061975747420394877143889885945336305414295314139507244695177887549094887061986620463327220586346030432731550617421168238140740600157137764348364595070740870977422155213465409492752709350141858141989090093641680035205975043549124382974765930336756768548921056751935659732417661594872253800976031104054204421629711597470770033907934006101453865340621763385927121144139876123093050849040638804744781745077880021130241262817005818066815987603380244330904985993553253768481242544555268132089382269330678737161421709242927983939704722774178497866252217753513
  public exponent: 65537

我需要像这样:

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjzLzvHyJXagAfmQNgRSDJ3vIStkpy3I3 FOW4xRx+WkoEbOV9K7WFgDB2PTvl+fAHhY5mvGGhZZfGGO0THEFZdBqDlZEZqbg6uW/QDh4cDdJb NFhAzIeXSPFSdLZ15i5YIzcPVKSlm7Cuf0ogUOq8qXnlEdfd47mrwp7KrT2vtgkrLpkyKiUE6e/I NrQYgPADSv0QyTBgZCxqt5wM70IQtjEi4EcSzgwCwG0aEbjo8Imv42BH1Zk8igs1A/tasLeSHAMY xpqAvGf8zHncSsAqdzJmziRn1tZUYN2WHKpW2mWuDVy5ACYePMv7IzzvTMAWjC7G6c8y5my+MmMe QmAfqQIDAQAB

(我得到的是一个正确的例子)

我真的不知道如何处理这种物体所以我真的不知道它是不是很愚蠢或难以实现。

编辑:(进一步说明) 在这种情况下,我处理一个PublicKey对象,我使用net.ripe.commons.certification库,因为我需要解析最终实体证书的字段。 当我获得公钥时,我使用X509cert的.getPublicKey()得到它,我看到它在第一个发布的代码中显示。我需要将它存储在数据库的一个字段中,如果我使用.getEncode().toString(),它会给我一些不正确的东西。 我已经知道网上的其他应用程序第二个代码(我想在db中保存它的方式)对应第一个代码。

由于

2 个答案:

答案 0 :(得分:0)

正如预期的那样,这是我的错误...... 在这种情况下,问题出在...... .getEncode().toString(),我正在使用

String key = Base64.encodeBase64(x509rc.getPublicKey().getEncoded()).toString() 

正确使用时

String key = new String(Base64.encodeBase64(x509rc.getPublicKey().getEncoded()))

感谢您的帮助

答案 1 :(得分:-1)

您不应该尝试将其存储为字符串,而应将其作为字节数组存储,否则会失败,如果您使用字符串设置为Base64编码值。