PKCS#1:RSA加密 版本1.5( 四 )


EB=00BTPS00D(1)
块标记BT是一个标记字节,表示加密块的结构 。对于此文档的版本,它有00,
01,或02值 。私钥操作为00,或01;公钥操作为02 。
填充串PS为k-3-D长的8位字节字符串 。对于00型,填充串为00;对于01型,
填充串为ff;对于02型,填充串为假散列生成的非0值 。这使得加密块EB的长度为
k 。
注重:
(1) 开始的00值字节保证了转化成整数后的加密块小于模数 。
(2) 对于00型来说,数据D必须以一个非0字节开始,或是必须知道长度,
以便加密块能被清楚的解析 。对于01和02型来说,加密块能被清楚的解
析,这是因为填充块PS不包含00值字节,它可以被一个00值字节从数据
D分开 。
(3) 01型被推荐为私钥操作标志 。01型有保证转化成整数的加密块很大的性
能,这能防止Desmedt和Odlyzko[DO86]所建议的某种攻击 。
(4) 01和02型是和被描述在RFC1423中的PEMRSA的内容加密密钥和消息
散列的加密是兼容的 。
(5) 对于02类型来说,建议为每一个加密过程都独立生成假散列字节,非凡是
假如相同的数据被输入多于一个的加密过程 。Hastad的结果[Has88]促进
了这种建议 。
(6) 对于02类型来说,填充串至少是8个字节长,这是对于公钥操作的一个安
全措施,为了防止攻击者通过测试所有可能的加密块来恢复数据 。类似的,
对于01类型最小长度是一样的 。
(7) 此文档将来可以扩展为包括其他类型 。
8.28位字节串到整数的转换
加密块EB需要被转化为一个整数x,即整数加密块 。从头到尾让EB1,...,Ebk
组成EB字节串 。然后整数x应该满足:
k
x=SUM2^(8(k-i))EBi(2)
i=1
换句话来说,EB的第一个字节在整数中意义最重大,最后一个字节的重要性最
低 。
注重:因为EB1=00并且2^(8(k-1))<=n,所以整数加密块x满足0<=x8.3RSA计算
整数加密块x需要被求c次方幂,然后模n,最后被赋给整数y,即整数被加密
数据 。
y=x^cmodn,0<=y这是一个典型的RSA计算 。
8.4整数到字节串的转换
整数被加密数据y需要被转换成一个长度k的8位字节串ED,即被加密数据 。
被加密数据应该满足:
k
y=SUM2^(8(k-i))EDi(3)
i=1
这里ED1,...,Edk就是字节串ED的组成 。
换句话说,ED的第一个字节在整数中最为重要,ED的最后一个字节重要性最低 。
9、解密过程
此章节描述了RSA解密过程 。
解密过程包含4个步骤:字节串到整数的转换,RSA计算,整数到字节串的转换,和
需加密块解析 。解密过程的输入是一个8位字节串ED,即被加密数据;模数n;指数c 。对
一个公钥操作来说,整数c是一个实体的公开指数e;对一个私钥操作来说,整数c是一个
实体的私人指数d 。解密过程的输出是一个8位字节串D,即原始数据 。
假如被加密数据ED的长度不是k,则为错误 。
简短来说,解密过程是根据加密过程来描述的 。
9.1字节串到整数的转换
被加密的数据ED根据等式(3)被转化成整数被加密数据y 。
假如整数被加密数据不满足0<=y9.2RSA计算
整数被加密数据y需要被求c次方幂,然后模n,最后被赋给整数x,即整数需加密块 。
x=y^cmodn,0<=x这是一个典型的RSA计算 。
9.3整数到字节串的转换
整数需加密块x根据等式(2)被转化成一个长度k的8位字节串EB,即需加密块 。
9.4需加密块解析
需加密块EB根据等式(1)被解析成一个由块标记BT,填充块PS和数据D组成的

推荐阅读