سلام
اطلاعات خاصی در مورد رمز و این حرفا ندارم، اون لینکی که داده بودی رو دنبال کردم.
چیزی که متوجه شدم:
اول با این برنامه، کلید رو درست می کنیم:
import gnupg
gpg = gnupg.GPG(gnupghome=r'F:\To-Learn\Python\gnupg\gpghome')
input_data = gpg.gen_key_input(
name_email='spam@gmail.com',
passphrase='issosecret')
key = gpg.gen_key(input_data)
من ایمیل رو spam@gmail.com و پسورد رو issosecret انتخاب کردم.
بعد با این برنامه پیام رو کد می کنیم:
import gnupg
message = 'Hello ubuntu.ir'
message_file = 'private_msg.txt'
gpg = gnupg.GPG(gnupghome=r'F:\To-Learn\Python\gnupg\gpghome')
encrypted_data = gpg.encrypt(message, 'spam@gmail.com')
encrypted_string = str(encrypted_data)
with open(message_file, 'wb') as f:
f.write(encrypted_string.encode())
پیام من Hello ubuntu.ir هست و گفتم که پیام کد شده رو بریزه تو فایل private_msg.txt
خب حالا پیام کد شده تو فایل private_msg.txt اینطوریه:
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.13 (MingW32)
hQEMA1kOh7yXbIbpAQf/VQWd2ofE79kAhGyIw5dpb9bOF0QKxAACEOp0EE7rWXhD
KbGTXNES/7FZ47JzjCHHW5mdaVxRukCBqSpD7yx1fIDT8IN9S6y6jCLwf/XTfBLG
CI7gSePuXe6K1qjRagQaOmcVC3bWV3kB4Rx+hP7V7q95AjBbH+5LxUVhaklGwa9u
vkOynRzZDOhxdF8sx0VTsSlOs2ddkx7VHLZKLqdDcT48sbxb0Jv6rNKM72iUdy0q
jtT03V6aD/D0FMNWq3KeNdDA+wTX9uFKY1aNYfXNfkJySzJ35RiNEScVhG3ARmnF
iipArUxHyhXHQnwipC8q5s/ZrnmfHojdDKb5RwzmndJKAXJYYKim2gzByWpw0NYU
ZkatjFp5SPsJj4XMVtvfXW6DZysntGq0L8OKatfW+k/O3xbopl8nnJRHNGSeNfpx
Iu++dpTJr8/YXP8=
=95Ju
-----END PGP MESSAGE-----
بعد برای اینکه از بین این چرت و پرت ها پیام رو باز کنم، از این کد استفاده میکنم:
import gnupg
message_file = 'private_msg.txt'
gpg = gnupg.GPG(gnupghome=r'F:\To-Learn\Python\gnupg\gpghome')
decrypted_data = gpg.decrypt(open(message_file).read(), passphrase='issosecret')
print('Status: ', decrypted_data.ok)
print('Decrypted string: ', decrypted_data.data)
خروجی این کد:
$ python decrypt_msg.py
Status: True
Decrypted string: b'Hello ubuntu.ir'
البته در صورتی که پسوردم درست نباشه، پیامی هم در کار نیست:
$ python decrypt_msg.py
Status: False
Decrypted string: b''
ویرایش: طبیعیه که میتونیم پیام کد شده رو به جای خوندن از فایل، کپی کنیم تو اسکریپتمون:
import gnupg
msg = '''-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.13 (MingW32)
hQEMA1kOh7yXbIbpAQf/VQWd2ofE79kAhGyIw5dpb9bOF0QKxAACEOp0EE7rWXhD
KbGTXNES/7FZ47JzjCHHW5mdaVxRukCBqSpD7yx1fIDT8IN9S6y6jCLwf/XTfBLG
CI7gSePuXe6K1qjRagQaOmcVC3bWV3kB4Rx+hP7V7q95AjBbH+5LxUVhaklGwa9u
vkOynRzZDOhxdF8sx0VTsSlOs2ddkx7VHLZKLqdDcT48sbxb0Jv6rNKM72iUdy0q
jtT03V6aD/D0FMNWq3KeNdDA+wTX9uFKY1aNYfXNfkJySzJ35RiNEScVhG3ARmnF
iipArUxHyhXHQnwipC8q5s/ZrnmfHojdDKb5RwzmndJKAXJYYKim2gzByWpw0NYU
ZkatjFp5SPsJj4XMVtvfXW6DZysntGq0L8OKatfW+k/O3xbopl8nnJRHNGSeNfpx
Iu++dpTJr8/YXP8=
=95Ju
-----END PGP MESSAGE-----
'''
gpg = gnupg.GPG(gnupghome=r'F:\To-Learn\Python\gnupg\gpghome')
decrypted_data = gpg.decrypt(msg, passphrase='issosecret')
print('Status: ', decrypted_data.ok)
print('Decrypted string: ', decrypted_data.data)
این طوری هم درست کار می کنه.