如何从数据库表中存储和检索RSA私钥?

时间:2015-04-21 11:37:05

标签: java encryption

我的应用程序使用私钥使用密钥文件连接到SFTP。

当我测试我的代码并引用存储在我的计算机上的私钥文件时,我可以成功连接。

密钥文件的内容具有以下格式。

  

----- BEGIN RSA私钥----- MIICXAIBAAKBgQCqGKukO1De7zhZj6 + H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ / DgYSF6vUp wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1 / 3J + skZ6UtW + 5u09lHNsj6tQ5 1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56 + qGyN8M0RVyaRAXz ++ xTqHBLh 3tx4VgMtrQ + WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2 pIIVOFMDG + KESnAFV7l2c + cnzRMW0 + b6f8mR1CJzZuxVLL6Q02fvLi55 / mbSYxECQQDeAw6fiIQX GukBI4eMZZt4nscy2o12KyYner3VpoeE + Np2q + Z3pvAMd / aNzQ / W9WaI + NRfcxUJrmfPwIGm63il AkEAxCL5HQb2bQr4ByorcMWm / hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3 / 9s5p + sqGxOlF L0NDt4SkosjgGwJAFklyR1uZ / wPJjj611cdBcztlPdqoxssQGnh85BzCj / u3WqBpE2vjvyyvyI5k X6zk7S0ljKtt2jny2 + 00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu / fhrT8ebHkTz2epl U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ 37sJ5QsW + sJyoNde3xH8vdXhzU7eT82D6X / scw9RZz + / 6rCJ4p0 = ----- END RSA私钥-----

我需要将私钥存储在数据库表中。当我尝试检索私钥时,我得到以下异常:

  

javax.crypto.IllegalBlockSizeException:当使用com.sun.crypto.provider.SunJCE_f.b(DashoA13 * ..)在com.sun.crypto.provider.SunJCE_f中使用填充密码进行解密时,输入长度必须是8的倍数。 b(DashoA13 * ..)at com.sun.crypto.provider.DESedeCipher.engineDoFinal(DashoA13 * ..)at javax.crypto.Cipher.doFinal(DashoA13 * ..)

我想学习如何将私钥存储在数据库表中,以便可以检索它。

编辑: 进一步澄清我的问题。我想学习如何将RSA私钥存储在数据库表中,以便我可以从数据库中检索私有RSA密钥,而不会收到IllegalBlockSizeException异常。

1 个答案:

答案 0 :(得分:1)

我建议您进一步调试代码 - a)尝试使用显式放在代码中的键作为String执行它并确保它有效,然后b)确保从数据库中获取的内容是你原来的那个字符串。这些步骤会将数据库逻辑部分与问题中的加密逻辑部分分离。

要获得有关您所获得的错误的更具体的答案,可能需要查看您的代码。到目前为止,您似乎正在尝试使用需要二进制形式的密钥的文本形式。或者也许你在将密钥发送到数据库时弄乱了密钥的base64。