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

标签 java encryption

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

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

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

-----BEGIN RSA PRIVATE KEY----- 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 PRIVATE KEY-----

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

javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..) at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..) at com.sun.crypto.provider.DESedeCipher.engineDoFinal(DashoA13*..) at javax.crypto.Cipher.doFinal(DashoA13*..)

我想了解如何将私钥存储在数据库表中以便可以检索。

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

最佳答案

我建议您进一步调试代码 - 通过 a) 尝试使用显式放置在代码中的 key 作为字符串来执行它并确保它有效,然后 b) 确保从数据库返回的是与原来的字符串相同。这些步骤会将问题中的数据库逻辑部分与加密逻辑部分解耦。

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

关于java - 如何从数据库表中存储和检索 RSA 私钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29771138/

相关文章:

java - 该等待/通知代码性能异常

java - 在多个线程中混洗 ArrayList

java - 分段解密文件

java - 加密文件的分隔符

使用 cryptojs 的 Java 到 JS 和 JS 到 Java 加密

java - Java中如何获取被用户环境变量覆盖的系统环境变量?

java - 当文本编辑留空时应用程序强制关闭

android - 堆损坏 - Android native 代码中的 SEGV_MAPERR

java - JSP无法在eclipse中访问mysql驱动

java - 如何仅使用密码来加密Java中的字符串?