Привет, мне нужно создать систему рассылки, в которой мне нужно сделать следующее:
Я слежу за это, чтобы выполнить шифрование с помощью aes-256 и подписать свой закрытый ключ. Однако я не знаю, как я могу зашифровать ключ aes-256 с помощью открытого ключа RSA и отправить его в том же электронном письме. Я рассматриваю подход python, но если кто-то может указать мне даже на версию этой командной строки openssl, я могу написать оболочку python для достижения того же.
Обновлено:
В настоящее время я использую этот метод для шифрования через S / MIME с использованием AES 256:
def sendsmime(from_addr, to_addrs, subject, msg, from_key, from_cert=None, to_certs=None):
msg_bio = BIO.MemoryBuffer(msg)
sign = from_key
encrypt = to_certs
s = SMIME.SMIME()
if sign:
s.load_key(from_key, from_cert)
p7 = s.sign(msg_bio, flags=SMIME.PKCS7_TEXT)
msg_bio = BIO.MemoryBuffer(msg) # Recreate coz sign() has consumed it.
if encrypt:
sk = X509.X509_Stack()
for x in to_certs:
sk.push(X509.load_cert(x))
s.set_x509_stack(sk)
s.set_cipher(SMIME.Cipher('aes_256_cbc'))
tmp_bio = BIO.MemoryBuffer()
if sign:
s.write(tmp_bio, p7)
else:
tmp_bio.write(msg)
p7 = s.encrypt(tmp_bio)
out = BIO.MemoryBuffer()
out.write('From: %s\r\n' % from_addr)
out.write('To: %s\r\n' % to_addrs)
out.write('Subject: %s\r\n' % subject)
if encrypt:
s.write(out, p7)
else:
if sign:
s.write(out, p7, msg_bio, SMIME.PKCS7_TEXT)
else:
out.write('\r\n')
out.write(msg)
out.close()
smtp = smtplib.SMTP()
smtp.connect('smtp.provider.net', 587)
smtp.login('username', 'password')
smtp.sendmail(from_addr, to_addrs, out.read())
smtp.quit()
@LukeJoshuaPark обновлен с помощью метода, который я использую, могу ли я что-нибудь добавить?





Похоже, вы используете M2Crypto, который уже включает поддержку S / MIME. Он позаботится обо всех деталях за вас! Он выполнит шифрование и подпись. Вам не нужно явно шифровать секрет и прикреплять его к сообщению. M2Crypto сделает это за вас.
Покажи, что ты пробовал. Ваш вопрос в настоящее время слишком общий.