| 扩展名 | 作用 |
| .csr | X.509证书请求文件(Certificate Signing Request)。CA签名后生成.crt证书文件 |
| .cer, .crt, .der | DER二进制编码的X.509证书,不包含私钥 |
| .pem | PEM Based64编码的DER证书(或证书链,可包含私钥) |
| .p7b, .p7c | PKCS#7标准证书(或证书链,不包含私钥). Win平台下常被用来存储证书链. 证书存放在”—–BEGIN PKCS7—–“和”—–END PKCS7—–“之间. |
| .p7r | PKCS#7证书请求 |
| .p10 | PKCS#10证书签名请求文件。CA签名后以p7r文件回复。 |
| .p12 | PKCS#12标准证书. 通常包含证书, 公钥, 以及使用了密码保护的私钥 |
| .pfx | PKCS#12格式的前身. 通常包含有PKCS#12格式的数据. Win平台下常用作导入/导出证书及私钥 |
| .pvk | 微软用于存放私钥的文件格式 |
| .spc | (Software Publishing Certificate) 微软软件发布证书,用于给软件进行签名 |
| .key | Base64编码私钥文件,可以使用或不使用密码保 |
-
常见证书格式[转载]
-
VS2017编译openssl
前言
编译版本为openssl-1.1.0e。编译openssl可以选择是否使用汇编代码的实现,本例中不使用汇编代码。
准备工作
- 安装ActivePerl;
- 安装nasm,如果不使用汇编代码编译则不需要安装。
编译安装
- 运行VC控制台,进入openssl目录
- 执行配置命令
- 编译
nmake all
all表示编译所有库。
- 检查
nmake test - 安装
nmake install
实际上就是把头文件和刚刚编译出的库文件以及一些帮助文档复制到--prefix指定的目录里。
- 环境清理
nmake distclean
perl Configure VC-WIN32 --debug no-shared threads no-asm --prefix=”d:\openssl”
VC-WIN32 编译为32位,若想编译为64位则使用VC-WIN64 --debug 调试模式 no-shared 静态库 threads 支持多线程 no-asm 不使用汇编代码进行编译 --prefix 指定输出目录 注意事项
- 如果想再次进行编译,需要重开一个VC控制台;
- 如果操作系统开启了UAC,则可能需要使用管理员权限的VC控制台,因为在编译过程中会向系统盘程序目录中写入SSL库的相关文件,会被UAC阻止导致编译失败。
-
用boost操作动态库
boost从1.61版本开始实现了跨平台操作动态库的代码。
#include <boost/dll.hpp> int main(int argc, char *argv[]) { //方法1 auto cpp11_func = boost::dll::import<int __stdcall(int)> ( "test.dll", "TestFunction" ); //调用函数 cpp11_func(1); //方法2 boost::dll::shared_library dll; dll.load("test.dll"); if (dll.is_loaded() == false) return -1; auto symbol = dll.get<int __stdcall(int)>("TestFunction"); if (symbol == nullptr) { dll.unload(); return -2; } //调用函数 symbol(2); dll.unload(); //注意:dll在析构的时候会释放DLL //方法3 auto p = boost::dll::import<void()>(lib_path, "test_function_name"); p(); //p为share_ptr,引用计数为0后同样会释放DLL return 0; }
-
在资源管理器中搜索文件名中带括号“(”的文件
如果一个文件夹中有大量的重复文件(被命名为(1)、(2)……),想删除这些文件的话,直接在搜索框中输入“(”是没用的(不识别),可以输入以下字串:
System.FileName:~=”(“
上面的意思是,搜索文件名中包含左括号的文件。
-
关闭Windows10自动更新的计划重启
Windows10的更新重启机制真是蛋疼,在设置界面里是无法关闭的。系统给出的解决方案是,设定一个计算机工作时间,待到自动更新完毕后,会在工作时间以外的时间重启计算机。然而这个工作时间只能设置12个小时的长度。要想彻底关闭自动更新的计划重启机制,就得改组策略。
-
boost str转uuid
uuid u = lexical_cast<uuid>("01234567-89ab-cdef-0123-456789abcdef");在较高版本的VS中使用lexical_cast
将字符串转换为uuid时需要设置以下编译命令,否则会报错。 /D_SCL_SECURE_NO_WARNINGS
-
API CryptBinaryToString in crypt32.dll Demonstration
//API CryptBinaryToString in crypt32.dll Demonstration: // //CRYPT_STRING_BASE64HEADER:[ //-----BEGIN CERTIFICATE----- //AAECAwQFBgcICQoLDA0OD0FCsKFKVQ== //-----END CERTIFICATE----- //] // //CRYPT_STRING_BASE64:[ //AAECAwQFBgcICQoLDA0OD0FCsKFKVQ== //] // //CRYPT_STRING_BASE64REQUESTHEADER:[ //-----BEGIN NEW CERTIFICATE REQUEST----- //AAECAwQFBgcICQoLDA0OD0FCsKFKVQ== //-----END NEW CERTIFICATE REQUEST----- //] // //CRYPT_STRING_HEX:[ // 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f // 41 42 b0 a1 4a 55 //] // //CRYPT_STRING_HEXASCII:[ // 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ................ // 41 42 b0 a1 4a 55 AB..JU //] // //CRYPT_STRING_BASE64X509CRLHEADER:[ //-----BEGIN X509 CRL----- //AAECAwQFBgcICQoLDA0OD0FCsKFKVQ== //-----END X509 CRL----- //] // //CRYPT_STRING_HEXADDR:[ //0000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f //0010 41 42 b0 a1 4a 55 //] // //CRYPT_STRING_HEXASCIIADDR:[ //0000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ................ //0010 41 42 b0 a1 4a 55 AB..JU //] //
-
设置对话框ComboBox控件为下拉列表
VOID CMyDlg::SetDropDownList(CComboBox* pComboBox) { DWORD theStyle; HWND theChild; theChild = ::GetWindow(pComboBox->m_hWnd, GW_CHILD); theStyle = GetWindowLong(pComboBox->m_hWnd, GWL_STYLE); theStyle &= ~CBS_DROPDOWN; //去掉DROPDOWN theStyle |= CBS_DROPDOWNLIST; //添加DROPDOWNLIST ::DestroyWindow(theChild); SetWindowLong(pComboBox->m_hWnd, GWL_STYLE, theStyle); }

