典型的加解密函数主要有:
1) EVP_CIPHER_CTX_init
初始化对称计算上下文。
2) EVP_CIPHER_CTX_cleanup
清除对称算法上下文数据,它调用用户提供的销毁函数销清除存中的内部密钥以及其他数据。
3) EVP_des_ede3_ecb
返回一个EVP_CIPHER;
4) EVP_EncryptInit和EVP_EncryptInit_ex
加密初始化函数,本函数调用具体算法的init回调函数,将外送密钥key转换为内部密钥形式,将初始化向量iv拷贝到ctx结构中。
5) EVP_EncryptUpdate
加密函数,用于多次计算,它调用了具体算法的do_cipher回调函数。
6) EVP_EncryptFinal和EVP_EncryptFinal_ex
获取加密结果,函数可能涉及填充,它调用了具体算法的do_cipher回调函数。
7) EVP_DecryptInit和EVP_DecryptInit_ex
解密初始化函数。
8) EVP_DecryptUpdate
解密函数,用于多次计算,它调用了具体算法的do_cipher回调函数。
9) EVP_DecryptFinal和EVP_DecryptFinal_ex
获取解密结果,函数可能涉及去填充,它调用了具体算法的do_cipher回调函数。
10)EVP_BytesToKey
计算密钥函数,它根据算法类型、摘要算法、salt以及输入数据计算出一个对称密钥和初始化向量iv。
11)PKCS5_PBE_keyivgen和PKCS5_v2_PBE_keyivgen
实现了PKCS5基于口令生成密钥和初始化向量的算法。
12)PKCS5_PBE_add
加载所有openssl实现的基于口令生成密钥的算法。
13)EVP_PBE_alg_add
添加一个PBE算法。