gpt4 book ai didi

python - 如何使用RSA方案加密字符串?

转载 作者:行者123 更新时间:2023-11-30 22:15:47 25 4
gpt4 key购买 nike

我正在使用此站点上的 RSA 实现教程:https://sahandsaba.com/cryptography-rsa-part-1.html

他们使用此函数进行加密:

def power(x, m, n):
"""Calculate x^m modulo n using O(log(m)) operations."""
a = 1
while m > 0:
if m % 2 == 1:
a = (a * x) % n
x = (x * x) % n
m //= 2
return a

def rsa_encrypt(message, n, e):
return modular.power(message, e, n)

然后他加密了一个数字:

>>> message = 123
>>> cipher = rsa_encrypt(message, n, e)

如何加密整个字符串?我想使用此实现对哈希生成的字符串进行加密。

最佳答案

您缺少的两个函数是从字节序列到数字以及返回的函数:

def bytes2num(b):
return b[0] + 256 * bytes2num(b[1:]) if b else 0

def num2bytes(n):
return bytes([n % 256]) + num2bytes(n // 256) if n else b''

如果您想使用字符串,您可以定义函数:

def str2num(s):
return bytes2num(s.encode('utf-8'))

def num2str(n):
return num2bytes(n).decode('utf-8')

如果您的消息很长,您应该迭代这些实现。

测试:

>>> s = 'Hello, world!'

>>> str2num(s)
2645608968347327576478451524936

>>> num2str(2645608968347327576478451524936)
'Hello, world!'

关于python - 如何使用RSA方案加密字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50187234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com