DHE_RSA_WITH_AES_128_CBC_SHA256模式下, RSA只用于身份验证, 不用于加密. 加密密钥是通过DH算法交换的. 因此需要DH相关的参数才能解密. 本文的demo样本使用了特殊方法来获取这些参数.
准备工作
下载和修改最新版的openssl源码
修改crypto/dh/dh_key.c
加入一段日志函数
/** 用于打印一段数据内容 */
static const char hexdig[] = "0123456789abcdef";
void log_hex(const char* tag, unsigned char* data, int len){
char msg[50], *ptr;
int i;
ptr = msg;
for(i=0; i<len; i++) {
*ptr++ = hexdig[0x0f & (data[i] >> 4)];
*ptr++ = hexdig[0x0f & data[i]];
if ((i & 0x0f) == 0x0f) {
*ptr = '\0';
ptr &#