第二十一章 EVP / 21.9 对称加密过程

       对称加密过程如下:   

1  EVP_EncryptInit

设置buf_len0,表明临时缓冲区buf没有数据。

2  EVP_EncryptUpdate

ctx结构中的buf缓冲区用于存放上次EVP_EncryptUpdate遗留下来的未加密的数据,buf_len指明其长度。如果buf_len0,加密的时候先加密输入数据的整数倍,将余下的数据拷贝到buf缓冲区。如果buf_len不为0,先加密buf里面的数据和输入数据的一部分(凑足一个分组的长度),然后用上面的方法加密,输出结果是加过密的数据。

       3  EVP_ EncryptFinal

加密ctxbuf中余下的数据,如果长度不够一个分组(分组长度不为1),则填充,然后再加密,输出结果。

总之,加密大块数据(比如一个大的文件,多出调用EVP_EncryptUpdate)的结果等效于将所有的数据一次性读入内存进行加密的结果。加密和解密时每次计算的数据块的大小不影响其运算结果。