 |

07.05.2024, 23:05
|
|
Новичок
Регистрация: 13.01.2024
Сообщений: 15
С нами:
1229791
Репутация:
1
|
|
Набросал код для шифрования. Вконо ли я понимаю, что сначала я пишу текст и потом через скрипт указываю публичный ключ для шифрования и так же для дешифрования? Пишу уже зашифрованный текст и после даю закрытый ключ
|
|
|

10.05.2024, 09:11
|
|
Новичок
Регистрация: 13.01.2024
Сообщений: 15
С нами:
1229791
Репутация:
1
|
|
Вопрос с ключами решен, сделал как и написал. Кто может подсказать, как правильно реализовать цифровой ключ и его проверку? Код для этого написал, выдает зашифрованный текст и подпись, но при проверке подписи пишет, что она недействительна.
|
|
|

10.05.2024, 13:28
|
|
Познающий
Регистрация: 27.04.2019
Сообщений: 45
С нами:
3709605
Репутация:
63
|
|
Зависимость: 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
|
|
Новичок
Регистрация: 13.01.2024
Сообщений: 15
С нами:
1229791
Репутация:
1
|
|
Сообщение от 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 но и без ответа разобрался, но все равно спасибо. Есть вариант улучшить рандомизацию ключей, чтобы не было повторений?
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|