RSA——长度问题
1、密钥长度
RSA密钥对包含公钥(模数、公钥指数),私钥(模数、私钥指数)
RSA密钥长度指的是模数的位数,如2048位RSA密钥指的是模数为2048比特的RSA密钥对,常规选值为:1024、2048、4096等。
2、明文长度
一次RSA加密对明文长度是有限制,实际上,RSA算法本身要求加密内容也就是明文长度m必须0<m<n(模数)
如果要加密一个长度大于模数的明文块,就需要对明文进行分块以满足要求。
对长度小于模数的明文进行加密,则需要进行填充,一般使用的padding标准有NoPadding、OAEPPadding、PKCS1Padding等
3、密文长度
密文长度就是对给定符合条件的明文加密出来的结果位长,这个是可以确定的,加密后的密文长度跟密钥长度是相同的,也就是模数的长度
加密:
RSA算法也是一个块加密算法( block cipher algorithm),总是在一个固定长度的块上进行操作。一次RSA加密能处理的明文长度是受RSA填充模式限制的,但是RSA每次加密的块长度就是key length。
由于有填充,对同样的数据,用同样的密钥进行RSA加密, 每次的输出都会不一样, 但是这些加密的结果都能正确的解密。