Hello my friend! I think that maybe my code can help. in cpp and python. Sincerely, Satoshi Nakamoto
#include <iostream>
#include <string>
#include <cryptopp/base64.h>
#include <cryptopp/cryptlib.h>
#include <cryptopp/filters.h>
#include <cryptopp/osrng.h>
#include <cryptopp/rsa.h>
#include <cryptopp/sha.h>
using namespace CryptoPP;
std::string rsa_encrypt(const std::string& message, const RSA::PublicKey& key) {
AutoSeededRandomPool rng;
// Pad the message
size_t messageLength = message.length();
size_t maxMessageLength = key.MaxMessageLength();
if (messageLength > maxMessageLength) {
throw std::length_error("Message too long for key");
}
std::vector<byte> paddedMessage(maxMessageLength);
size_t paddedMessageLength = key.ApplyPKCS1Padding((byte*)paddedMessage.data(), paddedMessage.size(), (const byte*)message.data(), messageLength, rng, RSA::ES_PKCS1v15);
// Encrypt the padded message
std::vector<byte> encryptedMessage(maxMessageLength);
size_t encryptedMessageLength = key.Encrypt(rng, (const byte*)paddedMessage.data(), paddedMessageLength, encryptedMessage.data());
// Convert the encrypted message to base64
std::string base64EncryptedMessage;
StringSource(encryptedMessage.data(), encryptedMessageLength, true, new Base64Encoder(new StringSink(base64EncryptedMessage)));
return base64EncryptedMessage;
}
int main() {
// Generate a key pair
AutoSeededRandomPool rng;
InvertibleRSAFunction parameters;
parameters.GenerateRandomWithKeySize(rng, 4096);
RSA::PrivateKey privateKey(parameters);
RSA::PublicKey publicKey(parameters);
// Encrypt a message
std::string message = "Hello, world!";
std::string encryptedMessage = rsa_encrypt(message, publicKey);
std::cout << "Encrypted message: " << encryptedMessage << std::endl;
return 0;
}
import os
import base64
from Crypto.Cipher import PKCS1_OAEP
from Crypto.PublicKey import RSA
from Crypto.Hash import SHA256
def rsa_encrypt(message: bytes, public_key: bytes) -> bytes:
# Load the public key
key = RSA.import_key(public_key)
# Pad the message
target_length = key.size_in_bytes()
padded_message = _pad_for_encryption(message, target_length)
# Encrypt the padded message
cipher = PKCS1_OAEP.new(key, hashAlgo=SHA256)
encrypted_message = cipher.encrypt(padded_message)
# Encode the encrypted message in base64
base64_encrypted_message = base64.b64encode(encrypted_message)
return base64_encrypted_message