Actualmente estoy trabajando con cifrado para Python y Javascript. Actualmente estoy trabajando con RSA combinado con base64 donde tengo este código tanto para python como para javascript:
JavaScript:
const NodeRSA = require('node-rsa'); const key = new NodeRSA("-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCzjsLuAJ18f71jg+ZG/wef3FuFTFK2ZvqBPjM7EwVj1FcLkzfixx6D6u59leFgW4SptOIgBtm9OGW1cCmxYLx1nHkugvoAL9g/vnIz6ejVTcoVYPJwkaGum3qXCPW6Km0canc7/DJtM//Zum40AZls/ZFjJ2YJrEOfevIU77urUwIDAQAB-----END PUBLIC KEY-----"); var x = {store_id: 1, url_key: 'hello_world.html', category_id: ''} const data = key.encrypt(JSON.stringify(x), 'base64') console.log(data)y pitón:
import base64 import json import rsa pub = rsa.PublicKey.load_pkcs1_openssl_pem('''-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCzjsLuAJ18f71jg+ZG/wef3FuFTFK2ZvqBPjM7EwVj1FcLkzfixx6D6u59leFgW4SptOIgBtm9OGW1cCmxYLx1nHkugvoAL9g/vnIz6ejVTcoVYPJwkaGum3qXCPW6Km0canc7/DJtM//Zum40AZls/ZFjJ2YJrEOfevIU77urUwIDAQAB\n-----END PUBLIC KEY-----''') payload = json.dumps({'store_id': 1, 'url_key': 'hello_world.html', 'category_id': ''}, separators=(',', ':')).encode('utf-8') bs64_encoded = base64.b64encode(rsa.encrypt(payload, pub)) print(bs64_encoded.decode('utf-8'))Salida para Javascript:
mBXCV95Dpc0sg8gigQWv1WdJNkLU9rlVQTcsFy6ell0PTsDfPh8EAVqFZBL6zM3i3S7P0Z2rSRCJQ6xGQag4yeupZ8yJIttyLk1HNIowhB/nPWqUxAPn59cL2uqP5hMBXSPLYet67DWEzwNkmHA4W2pZc/ysKrTLqUQBYGRYQQ97z3n8kGaGQLgg5afKXHPFne6qEjhiupH6cRKzwj7jwy0fEosBleyDaXWOaNtrK2drGpyR3OFVVq2QtlyXLt1kbYAV01eRSZatgRH0pNXQKEkwqSDmoEz4txDEaP/KU4nwroN/r40cOHYd1/pW2aMqjY0yTM3fm4rWM/nRQAYX5w==Salida para Python:
OPpU/VMEq7238VQamObgNX8r7pbUnvvNQ/5ie42EpWF3yXT4vNUFxNVaqvMdlNYft6FvVTs5xoAuuhg2JKRk6ar0EvIQL2ZxasIvAIpLhDazJijU5+JQ7u9nEY03QrXbrfHro3620g26LtOw5hAjjUy7pKLKO0hNO+bdobUZrio=y como puede ver, hay una diferencia y la salida de Javascript es la salida correcta que estoy buscando, pero no Python (al usar la salida, arroja datos no válidos mientras que la respuesta de Javascript es 200 (datos correctos)).
Mi pregunta es ¿por qué hay alguna diferencia entre Javascript y Python en lo que respecta al cifrado y cómo puedo hacer que la salida de Python sea correcta?