Javascript Python:可以使用JSON向包含加密部分的Python服务器发送消息吗?

Javascript Python:可以使用JSON向包含加密部分的Python服务器发送消息吗?,javascript,python,python-2.7,Javascript,Python,Python 2.7,我对JSON还不太了解,我刚刚开始学习本教程,请耐心听我说: 我的问题是,我是否可以使用JSON将包含加密部分的消息发送到Python服务器,以便它可以将其转发到另一台服务器 该消息将通过SSL来自Javascript客户端,其中包含Python服务器的一些信息和要转发到另一台Python服务器的加密消息。消息将如下所示: {ref_obj{msg_obj}{u pub_k}{u SSL 这可能吗?我看到这个帖子: 如果JSON不能做到这一点,有人能建议如何做到这一点吗?我唯一的要求是原始消

我对JSON还不太了解,我刚刚开始学习本教程,请耐心听我说:

我的问题是,我是否可以使用JSON将包含加密部分的消息发送到Python服务器,以便它可以将其转发到另一台服务器

该消息将通过SSL来自Javascript客户端,其中包含Python服务器的一些信息和要转发到另一台Python服务器的加密消息。消息将如下所示:

{ref_obj{msg_obj}{u pub_k}{u SSL

这可能吗?我看到这个帖子:

如果JSON不能做到这一点,有人能建议如何做到这一点吗?我唯一的要求是原始消息必须来自Javascript客户端(因为它将是Chrome中的一个插件),然后转到Python服务器进行转发

提前谢谢

是的

但某些字符串必须在发送之前转义,然后在另一端取消转义。 通过从base64导入B64编码、B64解码或类似的方式

原因是JSON数据必须是字符串或int值,基本上没有其他内容

json.dumps({1:2,'hey':'you'})
将起作用,这是您需要保留它的格式。这意味着二进制数据可能会与json混淆,因为它需要“正常”字符串。b64encode确保它仅是字符串中的有效字符,而不是其他字符:)

取决于你想完成什么。 您还可以加密整个JSON字符串并将其发送到服务器,解密并将其解析为JSON

将加密视为隧道

JSON->加密(JSON字符串)->服务器->解密->解析JSON

或者,如果您需要JSON数据作为元数据,请执行第一个选项

这是一种将所有流量封装为“加密”的方法 在服务器上,您只需执行以下操作:

data = sock.recv(1024)
jsondata = json.loads( b64decode(decrypt(data))) )
print(jsondata)
这是一种仅加密json数据某些部分的方法: 在服务器上:

data = sock.recv(1024)
jsondata = json.loads(data)
jsondata[1] = decrypt(b64decode(jsondata[1]))

但某些字符串必须在发送之前转义,然后在另一端取消转义。 通过从base64导入B64编码、B64解码或类似的方式

原因是JSON数据必须是字符串或int值,基本上没有其他内容

json.dumps({1:2,'hey':'you'})
将起作用,这是您需要保留它的格式。这意味着二进制数据可能会与json混淆,因为它需要“正常”字符串。b64encode确保它仅是字符串中的有效字符,而不是其他字符:)

取决于你想完成什么。 您还可以加密整个JSON字符串并将其发送到服务器,解密并将其解析为JSON

将加密视为隧道

JSON->加密(JSON字符串)->服务器->解密->解析JSON

或者,如果您需要JSON数据作为元数据,请执行第一个选项

这是一种将所有流量封装为“加密”的方法 在服务器上,您只需执行以下操作:

data = sock.recv(1024)
jsondata = json.loads( b64decode(decrypt(data))) )
print(jsondata)
这是一种仅加密json数据某些部分的方法: 在服务器上:

data = sock.recv(1024)
jsondata = json.loads(data)
jsondata[1] = decrypt(b64decode(jsondata[1]))

您可以简单地加密JSON并将密文作为原始二进制数据发送


JSON只是一种格式;没有人强迫你通过网络发送它。

你可以简单地加密JSON并将密文作为原始二进制数据发送


JSON只是一种格式;没有人强迫你通过电报发送。

对不起,我不太清楚你的意思。您的意思是用JSON对未加密部分的消息进行编码,然后将其余部分发送一个二进制文件吗?这可以在所有一个传输中完成吗?如何在Python服务器上将JSON部分与二进制部分分开?@unixsnob:为什么不将整个JSON有效负载作为二进制密文发送?因为我需要向第一台服务器提供一些有关转发消息的信息,以便于记帐。我想Torxed给出的解决方案就是我想要的。无论如何谢谢你的帮助。对不起,我不太明白你的意思。您的意思是用JSON对未加密部分的消息进行编码,然后将其余部分发送一个二进制文件吗?这可以在所有一个传输中完成吗?如何在Python服务器上将JSON部分与二进制部分分开?@unixsnob:为什么不将整个JSON有效负载作为二进制密文发送?因为我需要向第一台服务器提供一些有关转发消息的信息,以便于记帐。我想Torxed给出的解决方案就是我想要的。无论如何谢谢你的帮助。我有几个问题。如果我不解密第一台服务器中的加密部分,这会起作用吗?我不太清楚我是否讲清楚了。通信是通过Server1进行的,比如:Client->Server1->Server2,所以Server1只需要打开部分消息,当我调用json.dump()时,这会保持加密部分正常,这样我就可以将其转发到Server2吗?是的,会的。但是您不能使用我的第一个选项(所有流量),因为这意味着Server1必须解密整个块(更容易得到正确的结果)。请参阅我的第二个示例,其中我只加密值
2
,然后将数据转发到Server1,这样Server1就可以访问
1
,但它的值将被加密。。如果您只希望Server1看到邮件的收件人,并且该收件人的值是加密的,则此选项非常有用:)您最后的编辑肯定是我想要的!非常感谢您的详细回答!我有几个问题。如果我不解密第一台服务器中的加密部分,这会起作用吗?我不太清楚我是否讲清楚了。通信是通过Server1进行的,比如:Client->Server1->Server2,所以Server1只需要打开部分消息,当我调用json.dump()时,这会保持加密部分正常,这样我就可以将其转发到Server2吗?是的,会的。但是您不能使用我的第一个选项(所有流量),因为这意味着Server1必须解密整个块(更容易得到正确的结果)。看我的第二次考试