龙空技术网

RSA 算法加密的明文长度有限制,字符串一次性转换成数值

IT运维浅谈 101

前言:

现时大家对“rsa算法”大致比较讲究,同学们都想要剖析一些“rsa算法”的相关内容。那么小编在网上网罗了一些关于“rsa算法””的相关资讯,希望同学们能喜欢,朋友们一起来了解一下吧!

RSA 算法的加密过程是基于数论的,具体来说是基于大数分解的困难性问题。RSA 算法的加密过程中,需要使用两个大素数作为密钥的一部分,这两个素数的长度决定了 RSA 算法能够加密的最大位数。

在实际应用中,RSA 算法一般使用的密钥长度是 1024 位、2048 位或 4096 位。其中,1024 位的密钥长度已经不再推荐使用,2048 位的密钥长度被广泛应用,4096 位的密钥长度提供更高的安全性。

根据 RSA 算法的数学原理,加密的明文长度不能超过密钥长度减去一些填充和其他开销的位数。一般来说,RSA 算法的加密过程中,明文长度不能超过密钥长度的一半减去 11 位。

例如,使用 2048 位的密钥长度进行 RSA 加密,那么明文长度不能超过 1024 - 11 = 1013 位。

需要注意的是,RSA 算法的加密过程是比较耗时的,特别是对于较长的明文。因此,在实际应用中,通常会使用 RSA 算法加密对称密钥,然后使用对称密钥加密长文本数据,以提高加密和解密的效率。

---------#38个d转换成数字,并未分段

from Crypto.Util.number import long_to_bytes,bytes_to_long

flag = b"dddddddddddddddddddddddddddddddddddddd"

nums = bytes_to_long(flag)

flag = long_to_bytes(nums)

print(nums)

print(flag)

12781402204451677404037306280215706108558233058296070592226763603792196390671916587817395300

b'dddddddddddddddddddddddddddddddddddddd'

-------------#38个d转换成数字,并未分段,转换后的数据超过long的64位

//转换方式:

int1=100*pow(256,37)+100*pow(256,36)+100*pow(256,35)+100*pow(256,34)+100*pow(256,33)+100*pow(256,32)+100*pow(256,31)+100*pow(256,30)+100*pow(256,29)+100*pow(256,28)+100*pow(256,27)+100*pow(256,26)+100*pow(256,25)+100*pow(256,24)+100*pow(256,23)+100*pow(256,22)+100*pow(256,21)+100*pow(256,20)+100*pow(256,19)+100*pow(256,18)+100*pow(256,17)+100*pow(256,16)+100*pow(256,15)+100*pow(256,14)+100*pow(256,13)+100*pow(256,12)+100*pow(256,11)+100*pow(256,10)+100*pow(256,9)+100*pow(256,8)+100*pow(256,7)+100*pow(256,6)+100*pow(256,5)+100*pow(256,4)+100*pow(256,3)+100*pow(256,2)+256*100+100

print(int1)

import sys

sys.getsizeof(int1)

12781402204451677404037306280215706108558233058296070592226763603792196390671916587817395300

68

标签: #rsa算法