当前位置: 首页 > 面试题库 >

RSA在C和python之间进行加密/解密

巢嘉志
2023-03-14
问题内容

我已经编写了服务器,python并在中编写了客户端C。他们的工作是将秘密消息从服务器发送到客户端,并使用进行加密RSA private key。我正在使用openssl/rsa.h库,也就是说,我rsa使用私钥初始化对象,并使用加密消息RSA_public_encrypt(length_of_message, "Secret Message", to, rsa, RSA_PKCS1_PADDING)。然后,我将此加密的消息发送到python服务器,并尝试使用库 使用相同的私钥对其 进行
解密from Crypto.PublicKey import RSA。问题是它无法正确解密。它总是输出128位长的消息,其中秘密消息被随机放置在(e.g. '\x23\xa3x\43...Secret Message\xef\x4a')其中,通常应返回just Secret Message


问题答案:

问题是关于填充。Python的rsa模块使用PKCS1填充解密结果,但不会删除填充。使用下面我从此处采取的功能解决了问题:

def pkcs1_unpad(text):
if len(text) > 0 and text[0] == '\x02':
    # Find end of padding marked by nul
    pos = text.find('\x00')
    if pos > 0:
        return text[pos+1:]
return None


 类似资料:
  • 问题内容: 更新 我已经对C#代码进行了更改,因此它使用的块大小为256。但是现在,您好世界看起来像这样http://pastebin.com/5sXhMV11,我无法弄清楚应该使用rtrim()获得什么一团糟的最后。 另外,当您说IV应该是随机的时,您的意思是不要再使用一次相同的IV,否则我编码的方式错误吗? 再次感谢! 你好 我正在尝试使用在C#中加密的PHP解密字符串。我似乎无法让PHP使用

  • 我当前在解密服务器上的RSA加密数据时遇到了问题,服务器使用Node.js并使用node-rsa库进行加密/解密。 在我的Android客户端上没有任何问题地接收到公钥,但是当尝试解密数据时,我得到了以下异常: 这就是我在客户端上生成公钥的方式 以下是客户端的加密:

  • 我正在使用Objective c(iPad端)和c#(.NET,服务器站点)之间的加密/解密。我使用的是以下链接中的代码:iPhone/C#AES加密 我们在服务器端加密一个XML并使用web服务将其发送到iPad端。在iPad端,当我尝试解密时,它正在创建解密数据,但无法将该数据转换为字符串。使用NSUTF8StringEncoding将数据转换为字符串时会遇到一些问题。 谢谢你!

  • 在Android中生成RSA密钥对。Android中包含了Bouncy castle的删减版本: Python中的加密: Android解密。android中包含了Bouncy castle的删减版本: 测试密钥:

  • 我收到一个错误解密在C#中加密的消息(使用相应的公钥/私钥) 我的客户端是用C编写的,服务器是用Go编写的。我通过go的crypto/rsa包生成了一个私钥和公钥(使用rsa.GenerateKey(随机读取器,bits int))。然后,我将生成的公钥文件存储在客户端可以访问的地方,将私钥存储在服务器可以访问的地方。我使用以下代码(使用bouncy castle)在客户端上加密: go服务器从标