【问题标题】:How to encrypt/Sign data in python and decrypt it in Reactjs using RSA?如何在 python 中加密/签名数据并使用 RSA 在 Reactjs 中解密它?
【发布时间】:2018-12-20 16:55:58
【问题描述】:

我在服务器中有一个数据,我需要对其进行加密或签名并将其发送到使用 API 的反应应用程序,并且在反应中我需要使用公钥解密或验证签名。 下面给出的是我正在使用的 python 代码:

import json
from Crypto import Random
from Crypto.PublicKey import RSA
import base64
def generate_keys():
    modulus_length = 256 * 10
    privatekey = RSA.generate(modulus_length, Random.new().read)
    publickey = privatekey.publickey()
    return privatekey, publickey
def encrypt_message(a_message, publickey, privatekey):
    encrypted_msg = publickey.encrypt(a_message.encode("utf-8"), 32)[0]
    sign = privatekey.sign(a_message.encode("utf-8"), 32)
    encoded_encrypted_msg = base64.b64encode(encrypted_msg)
    return encoded_encrypted_msg.decode("utf-8"), sign;
a_message = 'Hello'
privatekey, publickey = generate_keys()
encrypted_msg, sign = encrypt_message(a_message, publickey, privatekey)

我需要在 React 应用程序中解密此加密消息或验证签名数据有什么办法吗?

【问题讨论】:

    标签: javascript python reactjs


    【解决方案1】:

    经过一番研究,我找到了一种在 python 中对数据进行签名并在 react 应用程序中进行验证的方法。

    蟒蛇:

    from Crypto.PublicKey import RSA
    from Crypto.Hash import SHA256
    from Crypto.Signature import PKCS1_v1_5
    import base64
    
    def sign_message(a_message, privatekey):
        digest = SHA256.new()
        digest.update(a_message.encode("utf-8"))
        privatekey = PKCS1_v1_5.new(privatekey)
        sign = base64.b64encode(privatekey.sign(digest))
        return sign
    
    def generate_keys():
    modulus_length = 256 * 10
    privatekey = RSA.generate(modulus_length, Random.new().read)
    publickey = privatekey.publickey()
    return privatekey, publickey
    
    privatekey, publickey = generate_keys()
    a_message = "Hello" # message that we need to sign
    sign = sign_message(a_message, privatekey)
    

    javascript/reactjs:

    import JSEncrypt from 'jsencrypt';
    import CryptoJS from 'crypto-js';
    var public_key = new JSEncrypt();
    public_key.setPublicKey(publicKey); // publicKey that we get from python
    data_to_verify = "Hello" // message you signed in python
    signature = Signature_that_you_get_after_signing_in_python 
    var verified = public_key.verify(data_to_verify, signature, CryptoJS.SHA256);
    console.log(verified) // we should get true if we have correct public key, signature and data
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-08
      • 1970-01-01
      • 2021-08-21
      • 2023-01-19
      • 2021-08-18
      • 1970-01-01
      • 2011-06-22
      • 2020-08-05
      相关资源
      最近更新 更多