现需要向后端发送报文, http post 方法
刚开始我用 python 写了个 demo 测试,发现没有问题,后端返回成功
于是现加入 c/c++项目中,但是 rsa 私钥加密(后端就给我了私钥……不过各种格式都有, key/pem 等)后,后端报错,检查问题发现, python 中 rsa 加密结果的 16 进制数据与 openssl 中 rsa 加密结果的 16 进制数据完全不同,都采用了 RSA PKCS#1 v1.5 。
c/c++中指明载入私钥、使用私钥加密
python 中直接读取*.key 文件后进行加密操作,并没有指明是私钥 python 代码
def RSAEncrypt():
key = RSA.importKey(open('domain.key').read())
cipher = PKCS1_v1_5.new(key)
return base64.b64encode(cipher.encrypt(sKeys))
在 openssl 使用中,我有什么地方没有注意到么?
这边记录一下吧,在调试完成openssl中rsa加密模块后发现python代码内部执行的情况(未证实,晚点去查阅资料)
以下为猜测内容:
这段代码中,domain.key为私钥,python利用私钥产生了公钥,然后使用公钥加密的字符串。
以上猜想来自于在使用openssl加密时,我直接利用私钥加密发送给后台,后台无法解析,于是使用公钥尝试,返回成功
反省:
1.这次rsa加密中,我竟然没有想到一个问题……后台给我了私钥,我可以利用私钥产生公钥……之前都是在盲目的乱试了……
2.对后台说给我私钥的意思应该是最高权限都给你了,随便搞吧,我理解成了就用私钥弄就行了,还是对这类东西不了解,还需要多学习啊
多谢大家的帮助
1
jugelizi 2016-10-19 11:43:17 +08:00 1
http post 方法 后端发送报文
难道不是 js 来获取密钥加密吗 数据长度不能超 14 还是 16 来着 |
2
harry890829 OP @jugelizi 呃,后端和我说这个还没有完善,直接给我了个私钥,让我加密传到后面就好
|
3
wy315700 2016-10-19 12:16:37 +08:00 1
公钥加密应该会有一个随机数,每次加密结果是不一样的。
|
4
shiji 2016-10-19 13:55:30 +08:00 1
楼上说的对, RSA 公钥加密密文每次都是不一样的。 RSA 私钥加密密文每次都是一样的。
比如我用 PHP 举个例子你看看。公钥私钥分别加密两次 http://main.xfiddle.com/87218f9d/rsa_encryption.php 代码在这里: http://main.xfiddle.com/87218f9d/rsa_encryption.txt |
8
fangjinmin 2016-10-19 17:27:47 +08:00 1
首先要搞清楚, RSA 是公开键加密方式 。
你用自己的私钥加密,服务器用你的公钥解密。 不管是.key 还是.pem, 你看一下,对方给你的私是不是这样的格式。 -----BEGIN RSA PRIVATE KEY----- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX yrVybznT4e+i2bxPP1uOu3Dc48xkzu3yjX+EJ7BYVa7u6lCkMjCPACA6TALuWHBk c50IXXbJa4VMNe/WPB26oX0QsXnXTqZ9fht2JYdOxdlw4j8eWds2nGfXyyp9bFxg 8Ey9AIMWsnIOrBsdcubrgmcoM/QRonT4RMoj++zuuAa56t/+B4VArCIea5LBUGcB OK0ClbABTGTtcTc8ZTj0oiwcoYCLf70D4Ytb93oMuYwoX5bepCLxxNrjdgDENrVl wGqQnMSAO6TEySuIPghYgbfpyZPPQq1Sg1PcewIDAQABAoIBAFSlOTXHJT+xu1hu KZMjJ4amu4hf4T+SZdEnK0zfRsoREOYe328T5cPaDY/zFzHDV3bxF11O03KypfFV aCsZ8uIYLozlS0xDtNeRooEs8wsoz4TnDQx59wsguJ1aFqfkwYNEHZxfUpuA7iCp 01gKcocL+9cdXJ1MSYEuA866qVsu4zILhpOcSzPaT5Ndi6CoUhZQ2/1Ru1BfuKIv hWa4WlQr+1PhzzI2wzWPOiWaEsew/WGkRqPsL45C7CWelfa/suJ89TxaECZu1fOZ WRwGgXLWlNr13dCtguAanvl4ricM8dXtNXA+9jrhl7OMaDW0YlX2+iDCSviRu6Ik jx1QHIECgYEA+xxvvdhhNbYVO9jJSg/nqMaRi0UMn/aDMiw1QXY1XNpZIjQxxYbj O/au+jMqwllqKCO/zVmZlLeJ9kttbQgtW+afKool+vChEdZDmBa/4pBcTibsdIq2 xwUoZFf9wr8Kpk2JVfFjjUfnFBFmDya3EtNBIDNhF8KzfRmgJ4Vw0LECgYEA8s4G qB1iSYUxGn24FBJ2sJxMYcxkasLhil8UEBKHk8ainsAX69yDlCoLmzmoAEytOYZS FgSW+VZcnoolqv8Ra7QEqv9HuELBWx/gPn6cMnmJXuQaOHEV3Vn7v+T54lVUA2nG sE3FINrS7kji6oslzq5semLdkmFNN26ORnLLausCgYEAzEkCDuwtiUisVZezifEO gZupZCe0cZ5WdUbJvIuyNevcf5r+srddvbad+yYNLzcWybjrnN+7teTq89fBGeaB IDaqXi0tYMzJ/HzXWK+JQ4Q1086OpvECaT6k8Z0z8G8C9vA1Phm254ULVKQi50iT v1jlrpCd+HqJEsj6JazFbsECgYEA7TqfBmKvRWX9NAThdbsUfDo55tPsyOLfunJr JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ KEZMFoTo0u3LMJpM4piogDUYcSstiqgumNNjZ1ZmAKr2CnMp3WZOVsWB9yNabm52 VB6U4UECgYEAg8N4W/YaohOVbe1khTLkDeTQjh5SGcigRNyvjPic0Z+9s+mwMnXV f0095q9mmJcSpc3FpqQ7nk+MCQwbYbPcNsN2lYoqMfst800NafRXMXeeHImxr+WF h8dycnofLi+5tg/PT/9NjBoePf8rvbmSnmQYnsOqo4WIPZAeF1sve6I= -----END RSA PRIVATE KEY----- |
9
harry890829 OP @fangjinmin 嗯,就是你说的这种格式的,我现在用私钥加密后,再用配对的公钥解密,发现问题没有问题,现在开始怀疑 base64 有问题了……好尴尬……
|