Golang rsa没有NO_PADDING?
但openssl是好的。 对于加密数据对接等语言,加密的数据与Golang无法正常解密,但使用PHP和Openssl可以正常使用,后来发现像Golang不支持NO_PADDING解密,似乎只有PKCS1。
Openssl增加参数 - raw可以正常解密。私钥在上面,是一个密码和解密正确的值。
有人可以帮我看看如何解决?golang rsa解密没有填充?
$ cat private.pem
-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBANJS/xu+NtmDqobnhCdLjWk46aYbBk/mQrLcozAIbQLFG2mgkrxf
B5+CgtISKpKfmRfCO2NhceK+YedaMMBUxn8CAQMCQQCMN1S9KXnmV8cEmlgaMl5G
JfEZZ1mKmYHMkxd1WvNXLNuke9ntKwti8zG1lAFcOVHnm/uYsNdua+lvvQlEgBUL
AiEA/c8ezGaNUFwEAltwTEFtFItT5PyOXlWIdPAZ7j160lkCIQDUI8f/chEmLxG1
5kPcRtyJsQRdAcnQZ5QOz6S0nBnUlwIhAKk0vzLvCOA9WAGSSt2A82MHjUNTCZQ5
BaNKu/Qo/Iw7AiEAjW0v/6FgxB9hI+7X6C89sSCtk1aGiu+4Cd/DIxK74w8CIB4q
rA1k247JrqKTGlqSHVr1Ta+h3BPbwFKCi5CiDOjV
-----END RSA PRIVATE KEY-----
$ xxd data.txt
00000000: 6d4b 5dab 6d64 45e1 e4cb 0ea8 20df b724 mK].mdE..... ..$
00000010: cfe5 db3e 75c4 e80e 2337 4f08 1b36 87b4 ...>u...#7O..6..
00000020: 7550 47d4 ed60 576a a160 2d01 3cf7 4c50 uPG..`Wj.`-.<.LP
00000030: 7e44 6432 1f9d cfe2 2e9f 4f89 f815 ae01 ~Dd2......O.....
$ base64 -i data.txt
bUtdq21kReHkyw6oIN+3JM/l2z51xOgOIzdPCBs2h7R1UEfU7WBXaqFgLQE890xQfkRkMh+dz+Iun0+J+BWuAQ==
$ cat data.txt | openssl rsautl -decrypt -inkey private.pem -raw
qYnYKT2mxuXR5XB615gOenqxOnIUjWs7
你说的是什么意思..请使用英语使其更容易理解。 – Brij
我认为我们应该重新打开这个问题:语言不太好,但1)作者应该不是母语; 2)问题的本质是可以辨别的,可以表述为“为什么go的'crypto/rsa'包仅支持OAEP和PKCS#1填充方案,并且不允许在没有填充的情况下对数据使用RSA操作?”。我认为,答案可能是由[这里]概述的原因(http://crypto.stackexchange.com/a/15184)(基本上相当于“不要那么做”),但OP仍然可能需要处理遗留数据/协议,他们的担忧是有效的。 – kostix
@ohko,你可能想在[项目的bugtracker](https://github.com/golang/go/issues)中提交一个bug。如果你这样做,请确保:1)尝试制定为什么你需要RSA操作的支持,而不需要填充 - 不要只是在那里张贴一个链接到这个讨论; 2)请发布您在此提交的问题的链接(作为评论) - 以供将来参考。 – kostix