1

I want to sign data with RSA private key in java. Private key follows PKCS#1 format and unfortunately, I found no method or jar file in order to read private key and sign data in java. Note that there are bunch of the same questions and all found to change the private key format from PKCS#1 to PKCS#8 as a comprehensive solution. This means changing the private key totally and changing final signed data. Is there any promising answer for this problem? Thanks a million.

Here is the data that I wanna sign it with the private key

1A2B3C8D9JCDFGHJKLDMNFDH1A2B3C8D9JCDFGHJKLDMNFDH52018-05-20T12:52:50.553+04:30parsian-bank.ir

Here is the private key

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA5T2JQe6YRsB/nhLRJAz/GabpNXzyhJdn6SthkTkrKzp7FZNm
5/cDyHorXcpLdGlyWr1Qapf4CaxdA1GkFJamdg/xro2TGwzQ9x/O18DIUhaH4IGf
QAKaDcc+P9Uo5k4d/Nbah3nyjwk5xQApGSG9KcDTmGIOaPpag581vbLAf4x45BSa
r9vc0uiZHqAUAj1XkM3Zci9dSecASZaDjIhKI62Xv0Q1dfzu1NLGBMB1q4HgCaR6
P7J0S7iAK3EX1Ej6YJ9YlQflThBjQGScUO3Z5vMLHXpQd7eNzmqhpzFwo2yHFNg/
marMFVpBcwQuVtbjG2Mu3OCsUDU/RL6bWulMTwIDAQABAoIBAQDaZ2lpBo/QAMDV
cqoNRdCZuPtBOZy5FKMsdGdNfAET+3CfGsOVRzM0gqjkf8Kp03je2LVQCR+I383y
RoskDm/j1cb1/e5kfC5u88AWsJZqFws3q2d1DcWGUQiOumBwI4bQiEbFgjrFag2/
EisVxZ46tHskGHAQNk2cT0hdRnu+R+J+oIK0TtkrTCvcI4RW1LKYrv0X1+0XcB4K
mSVADttsJlJ3LBEdia0C9L2GDzILI+q4hXXnF07dcUGz/jbltjxsI5tIFiAWkjBu
usBgW2CI9rVdqeUgnkbCf0MjJ1o09dnfRzkxjJYuuM5Z+oCcgdlQlJs7541rUErP
pc20Z4uJAoGBAPfySkptuh8/1K/fsYZQa+9mg3UCSIoEOmKkhkutOxGbhFlI6Jqw
xZsEu2CUFqSYuGLYXm99nVlTPBeSHPTHZrhbe6rHAY32L6lfNiVyjIcObd9UtdI8
GhMCWmWGfYIJpwA00DkTeo20zMzXUNYpAtp9LyyI4JMXNsTH4NB35KitAoGBAOyv
s8yOAh2BeZ6Elt5wSI4nfOay7rje6kLu8+uwdnkbXEQX/XFYd/H9AxQqpQkhnvwh
ffCQp/OBS1jtfmuxx/8wQkvHc2eUnTcnzrAXig/J8qK4PDr7h80puUiWAHxcbVg+
ykoyFPi3hIqzLHXOOxFDXBh3Tm6MXmfbi5HUj3xrAoGAN7Ob0vqxnIGXg2dKl3UL
un2aPLglmbP3dd+mN+wT4BHC+tfxQYdC7V9zxO+f4pxYmAQpuvxKVB3p2xW9IZSG
VBZhQu1wQPc0n+U+4czJGzI3prt+GVvdM7YMntBG8+a9OMOkn53ro1ghxkb85w/R
j0oeRe/+G61UZYLN06eLnAUCgYAr1wObsPYNVw0a4n47Z1rZEdFdvejfz1Je4XnG
vyHCnuHBLxxfoT5eUTn/w0JcZaDYHLACHhktzlYRe7P96KkdyGePN7tVhT51l+b9
0O5erE5H+44UcsCdrMvH+RjP8CLExKSdh5dA1mUzd6qVi4R/VxW45mhdq5xU6mJ4
uYF2TwKBgQDogEId7bajOHGpp0bvAMu+0S/PoJrIFQmjIhPKrUgA2K8nbinzExEF
oD27ZFnbXe3aO2J0hRANUWtUCLoX/3OczVs7H1ffNxIs/D+9DtqWJqV8Rj/mCAWl
MAH9y2KV8DkA/lXSK/sFzBZQLjhjzm9PQFVJQ7bgbQMmwop2VaYDLw==
-----END RSA PRIVATE KEY-----

Here is the expected result:

HzO+QqTuy6IVYVtEsoHPw8ZXFiSj/Vtw9nFJEDzYP+UYPTiv270Vv3QBuh2dujdTE+5bbDvocroK9aK5Tl0fhTvNnKIntGExDETnUU6t3IvUDkhyQWsPN5nokdELa0mhY/ZVPZwXLbSBE8BoX3UG71OWUvZ+/B6lxSJBCwij28+PI4fiPWwHPiWDgsSEts1g13NtRgPkHDf57Q20OF6y5t+bdwC38DFoj0yuwmkfHxoNl4JwWO01pPWpaMnmW0r+AISysY+ZbmC64tGlu7PKCmWxixkxeaSyUNiA+A8R5xoE9ly3Atep0SfpAVOb5grITHH43ITXo0kRCOcr+m+Eig==

And the result that obtain form changing PKCS#1 to PKCS#8:

Z49gXHUPlhiNaQgZD9X1ITLo4RgRUs9iJsk486H2jepCcHGR20GcbIKciANqDRuWHc4Q8bZTqLWXvXm3pCfov2KjNdR73TskdtWkdLUdOK4lpN5gc5GLEZreQq4CzXIJqTvE1KAViEHHYj3FJz7DViuTJ8P93urK95YfZOiyEwy9aCD93i8WgPq8Uypkx7tH31JOAj4Tk3E2NfE5Jbw6Awb/5v3sCScmdnr5P7UxCIQjeB20LzpQsQpWsTVACbj5UOensj+tRH3oxDbDfweTOtqRIeNpTJGFnDE4rdPBBtCZZ5Nv5xmKTg0ZZAiUGAUaCuUSDjihjTMXUXDmosrznA==
  • Do you try Bouncycastle? -- https://stackoverflow.com/questions/41934846/read-rsa-private-key-of-format-pkcs1-in-java – Kirill Liubun May 22 '18 at 11:31
  • I did, but it doesn't do the trick – Seyyed Hossein SeyyedAghaei Re May 22 '18 at 11:38
  • Changing the private key format (between any of PKCS1 PKCS8 PKCS11 XML or anything else you can find) doesn't change the resulting signature or signed data in the least. Is your PKCS1 in PEM or DER or something else, and if PEM (or maybe something else) is it encrypted? – dave_thompson_085 May 22 '18 at 20:09
  • PKCS#1 is in RSA format. I changed it to PKCS#8 but unfortunately signed data was completely different from what I expected. – Seyyed Hossein SeyyedAghaei Re May 23 '18 at 05:57
  • Changing the key format should have no effect and never does for me (and I do it all the time). Your first signature is the correct RSASSA-PKCS1v1_5-SHA256 signature for that data; your second signature is also a valid signature but for different data. [Please show the code that does the second signature](https://stackoverflow.com/help/mcve) – dave_thompson_085 May 25 '18 at 20:52
  • (1) Don't post code in comments; it's unreadable. (2) Don't post your question in comments; it's against Stack policy. Edit your question to contain your question; comments often are deleted. (3) Follow my link to the help center where it explains what Minimal Complete and Verifiable means. (4) On rechecking I apparently swapped the data; it is your _second_ signature (the one you call wrong) that is correct, so it's the code for the _first_ signature (using PKCS1) we need to verify. – dave_thompson_085 May 28 '18 at 21:20

0 Answers0