ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   Шифрование RSA (https://forum.antichat.xyz/showthread.php?t=1510243)

вареник с мясом? 07.05.2024 23:05

Набросал код для шифрования. Вконо ли я понимаю, что сначала я пишу текст и потом через скрипт указываю публичный ключ для шифрования и так же для дешифрования? Пишу уже зашифрованный текст и после даю закрытый ключ

вареник с мясом? 10.05.2024 09:11

Вопрос с ключами решен, сделал как и написал. Кто может подсказать, как правильно реализовать цифровой ключ и его проверку? Код для этого написал, выдает зашифрованный текст и подпись, но при проверке подписи пишет, что она недействительна.

kiaostashi 10.05.2024 13:28

Зависимость: pycryptodome

Python:





Код:

from
Crypto
.
Signature
import
pkcs1_15
from
Crypto
.
Hash
import
SHA256
from
Crypto
.
PublicKey
import
RSA
def
generate_signature
(
message
,
private_key
)
:
private_key_obj
=
RSA
.
import_key
(
private_key
)
h
=
SHA256
.
new
(
message
.
encode
(
)
)
signature
=
pkcs1_15
.
new
(
private_key_obj
)
.
sign
(
h
)
return
signature
def
verify_signature
(
message
,
signature
,
public_key
)
:
public_key_obj
=
RSA
.
import_key
(
public_key
)
h
=
SHA256
.
new
(
message
.
encode
(
)
)
try
:
pkcs1_15
.
new
(
public_key_obj
)
.
verify
(
h
,
signature
)
return
True
except
(
ValueError
,
TypeError
)
:
return
False
key_pair
=
RSA
.
generate
(
2048
)
private_key
=
key_pair
.
export_key
(
)
public_key
=
key_pair
.
publickey
(
)
.
export_key
(
)
message
=
"blast.hk"
signature
=
generate_signature
(
message
,
private_key
)
verified
=
verify_signature
(
message
,
signature
,
public_key
)
print
(
f"verified:{verified}"
)
# verified: True


вареник с мясом? 17.05.2024 11:38

Цитата:

Сообщение от kiaostashi

Зависимость: pycryptodome

Python:





Код:

from
Crypto
.
Signature
import
pkcs1_15
from
Crypto
.
Hash
import
SHA256
from
Crypto
.
PublicKey
import
RSA
def
generate_signature
(
message
,
private_key
)
:
private_key_obj
=
RSA
.
import_key
(
private_key
)
h
=
SHA256
.
new
(
message
.
encode
(
)
)
signature
=
pkcs1_15
.
new
(
private_key_obj
)
.
sign
(
h
)
return
signature
def
verify_signature
(
message
,
signature
,
public_key
)
:
public_key_obj
=
RSA
.
import_key
(
public_key
)
h
=
SHA256
.
new
(
message
.
encode
(
)
)
try
:
pkcs1_15
.
new
(
public_key_obj
)
.
verify
(
h
,
signature
)
return
True
except
(
ValueError
,
TypeError
)
:
return
False
key_pair
=
RSA
.
generate
(
2048
)
private_key
=
key_pair
.
export_key
(
)
public_key
=
key_pair
.
publickey
(
)
.
export_key
(
)
message
=
"blast.hk"
signature
=
generate_signature
(
message
,
private_key
)
verified
=
verify_signature
(
message
,
signature
,
public_key
)
print
(
f"verified:{verified}"
)
# verified: True



Спасибо за ответ. Я ошибочно использовал библиотеку pyrsa но и без ответа разобрался, но все равно спасибо. Есть вариант улучшить рандомизацию ключей, чтобы не было повторений?


Время: 17:46