PKCS1V1.5模式中,如果是公钥加密信息(forEncryption=true),密钥长度为1024位,那么输出的密文块长度为128个字节,输入的明文块长度为128-11,即输入的明文块最大是117字节,如果输入的明文块小于117字节,比如输入的明文块长度为64字节,那么会对这个明文块进行补齐,在明文块前添加两字节0x0002(代表公钥加密)然后后面的52字节为随机的字节(非零),再补齐最后一个字节,即52(117-64-1),从零开始的,添加一字节0x00,再在补齐的后面添加实际的明文块。

这样处理后就会使得明文块转化成与module差不多的大整数。

如果是私钥加密(forPrivateKey=true),密钥长度为1024位,那么输出 的密文块长度也是128字节,输入的明文块的长度为128-11,即输入的明文块最大是117字节,如果输入的明文块小于117字节,比如输入的明文块长度为64字节,那么对这个明文块进行补齐,在明文块前添加两个字节0x0001(代表私钥加密),然后在后面的52字节为字节0xff,在最后一字节,即52(117-64-1),从零开始,添加一个字节0x00,再在补齐的后面添加实际的明文块。

下面是示意图:

公钥加密:| 0x0002 | RRRRRRRR | 0x00 | DDDDDDDDDDDD;其中R至少8个字节,R表示随机字节
私钥加密:| 0x0001 | FFFFFFFF | 0x00 | DDDDDDDDDDDD;其中F至少8个字节,F表示字节值为0xFF