赞
踩
注意平台要和你运行的平台一致,这里是x64的平台。
具体添加,注意图中红色标识。后面的添加方式相同就不在介绍。
#include<openssl/bio.h>
#include<openssl/ssl.h>
#include<openssl/des.h>
#include "openssl/evp.h"
//两个调用链接器的
#pragma comment(lib,"libssl.lib")
#pragma comment(lib,"libcrypto.lib")
//在openssl3.0中对称加密的许多低级函数都被弃用了,使用以前的函数如DES_random_key(),DES_set_key_checked()等为不安全函数,会报错,该语句可防止报错。
#pragma warning(disable:4996)
#include<iostream>
using namespace std;
#pragma warning(disable:4996)的理解参考:Visual Studio 编译时出现 error C4996 解决方法 (runoob.com)
#include<openssl/bio.h> #include<openssl/ssl.h> #include<openssl/des.h> #include "openssl/evp.h" #pragma comment(lib,"libssl.lib") #pragma comment(lib,"libcrypto.lib") #include<iostream> #pragma warning(disable:4996) using namespace std; int test1() { DES_cblock key; DES_random_key(&key); DES_key_schedule schedule; DES_set_key_checked(&key, &schedule); const_DES_cblock input = "hehehe"; DES_cblock output; cout<< "test1"<<"明文:"<< input<<endl; //加密 DES_ecb_encrypt(&input, &output, &schedule, DES_ENCRYPT); cout << "加密:"; for (int i = 0; i < sizeof(input); i++) cout << output[i]; cout << endl; //解密 DES_ecb_encrypt(&output, &input, &schedule, DES_DECRYPT); cout << "解密:" << input<<endl; return 0; } int test2() { cout << "test2" << endl; const char* keystring = "this is key"; DES_cblock key; DES_key_schedule key_schedule; //生成一个key DES_string_to_key(keystring, &key); if (DES_set_key_checked(&key, &key_schedule) != 0) { cout << "密钥生成失败!"; return -1; } //需要加密的字符串 unsigned char input[] = "这是需要加密的字符串"; cout << "明文:" << input<<endl; size_t len = (sizeof(input) + 7) / 8 * 8; unsigned char* output = new unsigned char[len + 1]; //IV DES_cblock ivec; //设置IV为0x0000000000000000 memset((char*)&ivec, 0, sizeof(ivec)); //加密 DES_ncbc_encrypt(input, output, sizeof(input), &key_schedule, &ivec, DES_ENCRYPT); //输出加密后的内容 cout <<"加密:"<< output<<endl; memset((char*)&ivec, 0, sizeof(ivec)); //解密 DES_ncbc_encrypt(output, input, len, &key_schedule, &ivec, 0); cout << "解密:" << input << endl;; delete output; return 0; } int main() { test1(); test2(); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。