• 常见证书格式[转载]

    ·

    发布于

    修改于

    扩展名 作用
    .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可以选择是否使用汇编代码的实现,本例中不使用汇编代码。

    准备工作

    1. 安装ActivePerl;
    2. 安装nasm,如果不使用汇编代码编译则不需要安装。

    编译安装

    1. 运行VC控制台,进入openssl目录
    2. 执行配置命令
    3. 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 指定输出目录
    4. 编译
      nmake all
      all表示编译所有库。
    5. 检查
      nmake test
    6. 安装
      nmake install
      实际上就是把头文件和刚刚编译出的库文件以及一些帮助文档复制到--prefix指定的目录里。
    7. 环境清理
      nmake distclean

    注意事项

    1. 如果想再次进行编译,需要重开一个VC控制台;
    2. 如果操作系统开启了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);
    }

最新