最近在整理关于数据加密解密的资料,整合C/C++、.NET、JAVA三个平台的数据加解密资料,使得三个平台调用相关函数加解密得到的结果都是一致的,兼容的。
ps:最后整理的资料可能会以电子版pdf的形式发出来,如果对您有益,请关注一下。
C/C++是直接使用openssl库的crypte模块进行数据加解密的,下面介绍一下openssl/crypt调用DES进行加解密的过程。代码很容易理解,直接贴代码了:
#include <stdio.h>
#include "evp.h"
#define BREAK_ERROR(msg){\
fprintf(stderr,"error break [%s]\n",msg);\
break;\
}
#define CIPHER_INFO(e){\
fprintf(stderr,"key_len:[%d]",EVP_CIPHER_CTX_key_length(e));\
fprintf(stderr,"iv_len :[%d]",EVP_CIPHER_CTX_iv_length(e));\
fprintf(stderr,"mode:[%d]",EVP_CIPHER_CTX_mode(e));\
fprintf(stderr,"flag:[%d]\n",EVP_CIPHER_CTX_flags(e));\
}
int test_ecb_des(char *buf1,char *buf2,char *buf3,int *len1,int *len2,int *len3,unsigned char *key){
int ret = 0,tmplen;
*len2 = *len3 = tmple