将der格式的证书转成pem格式
openssl x509 -inform PEM -outform DER -in server.der -out server.pem
//读取公钥license生成RSA结构
handle = fopen(RSA_PUBLIC_KEY_FILE, "r");
if (!handle) {
printf("open file %s error\n", RSA_PUBLIC_KEY_FILE);
return -1;
}
public_key = PEM_read_RSA_PUBKEY(handle, NULL, NULL, NULL);
if (handle) {
fclose(handle);
}
if (!public_key) {
printf("PEM_read_RSA_PUBKEY Error\n");
return -1;
}
printf("Loading PEM_read_RSA_PUBKEY Success\n");
//用公钥进行解密
memset(dec_buf, 0, sizeof(dec_buf));
ret = RSA_public_decrypt(dataSize, converData, dec_buf, public_key, RSA_PKCS1_PADDING);
if (ret <= 0) {
printf("RSA_public_decrypt Error(%d)\n", ret);
printf("dec_buf:%s\n", dec_buf);
}
else {
printf("RSA_public_decrypt Success\n");
printf("dec_buf:%s\n", dec_buf);
save_file(dec_buf);
}
if (converData) {
free(converData);
}
if (data) {
free(data);

}
if (public_key) {
RSA_free(public_key);
}
static int base64_decode(char *str, int str_len, unsigned char *decode)
{
int len=0;
BIO *b64 = NULL,*bmem = NULL;
b64=BIO_new(BIO_f_base64());
bmem=BIO_new_mem_buf(str, str_len);
bmem=BIO_push(b64, bmem);
len=BIO_read(bmem, decode, str_len);
decode[len]=0;
BIO_free_all(bmem);
return len;
}
int main()
{
//密钥
DES_cblock key = {'s', 't', 'a', 'r', '-', 'n', 'e', 't'};
//初始化向量,必须与加密使用的向量一致
DES_cblock ivec = { 1, 2, 3, 4, 5, 6, 7, 8 };
DES_key_schedule key_schedule;
//base64每行结束符必须是\n
char *data = "qbXat7531Oy/3ZFKNU/b4X0r/nwcnDNgT3iliJGDJr0=\n";
unsigned char base64_de[1024];
int base64_de_len = 0;
unsigned char des_de[1024];
//先base64解码
memset(base64_de, 0, sizeof(base64_de));
base64_de_len = base64_decode(data, strlen(data), base64_de);
//设置密钥
DES_set_key_unchecked(&key, &key_schedule);
//解密
memset(des_de, 0, sizeof(des_de));
DES_ncbc_encrypt(base64_de, des_de, base64_de_len, &key_schedule, &ivec, DES_DECRYPT);
printf("des_de:%s\n", des_de);
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-72318-3.html
冗余过分
如果他们胆敢撞击或者攻击我们的渔船
中国发展迅速都是老百姓无形中的支持