最近在看一个sample,很长时间没有看伪代码,突然感觉有些生疏了,但是这个样本用到了RSA-2048位密钥长度的算法,一下子就又想研究研究它了,之前没想过别人是如何知道这个sample是使用了什么算法,可能是通过比我用的高级的插件吧,我用PEID的附带插件扫描识别算法,但是具体多少位的加密密钥就识别不出来,所以为了搞清楚一些之前没有很明白的API,决定仔细查询下微软加密库相关的API。

该API用于获取特定加密服务提供程序(CSP)内特定密钥容器的句柄,保存在szContainer句柄中。

CryptAcquireContextW(LPCSTR  szContainer,LPCSTR  szProvider,DWORD  dwProvType,DWORD  dwFlags)

该API用于产生一个随机的交换密钥或者公/私钥对,这里需要特别声明下的是:参数。

Algid 参数表明产生私钥所使用的算法。

微软提供的基本算法

CALG_MD2,CALG_MD5,CALG_SHA,CALG_SHA1,CALG_MAC,CALG_HMAC,CALG_SSL3_SHAMD5,CALG_MD2,CALG_MD2

CALG_RSA_SIGN,CALG_RSA_KEYX,CALG_RC2,CALG_RC4,CALG_DES

微软提供的增强型算法:

CALG_MD2,CALG_MD5,CALG_SHA,CALG_SHA1

CALG_MAC,CALG_HMAC ,CALG_SSL3_SHAMD5,CALG_RSA_SIGN,CALG_RSA_KEYX,CALG_RC2,CALG_RC4,CALG_DES,CALG_3DES_112,CALG_3DES

dwFlags 参数表示密钥使用的长度,参数可以为0,采用默认的密钥长度。这里又有重点了,因此,如果要生成2,048位RSA签名密钥,则值0x08000000与任何其他dwFlags预定义值一起使用按位或运算。(官方原话:Thus, if a 2,048-bit RSA signature key is to be generated, the value 0x08000000 is combined with any other dwFlags predefined value with a bitwise-OR operation。链接:https://docs.microsoft.com/en-us/windows/desktop/api/wincrypt/nf-wincrypt-cryptgenkey)

CryptGenKey(HCRYPTPROV  hProv,ALG_ID  Algid,DWORD  dwFlags,HCRYPTKEY  *phKey);

我这个sample调用这个API时,传的参数是0x8000001,仔细看了官方文档后,我就觉得它用的是RSA-2048位加密算法了,真的是个细节,如果以后再碰到调用这个参数的话,那我肯定就直接一眼看出来了,还是多动手查阅资料的好,实践出真知。

部分内容有参考该博主的文章:https://blog.csdn.net/liuhuiyi/article/details/7788867

微软官方提供的加密库相关学习相关推荐

  1. 制作Windows U盘启动盘---微软官方提供(最容易上手的方式)

    随着越来越多的系统重装的场景,所以微软也提供了一个官方的方式,步骤如下: 首先进入官网下载点击下载 下载完成后我们发现是一个MediaCreationTool1909.exe的可执行程序,我们打开这个 ...

  2. 安装微软官方提供的win 10 PE 系统到U盘

    1.下载并安装Windows ADK 下载地址:下载WinPE (Windows PE) | Microsoft Docs 下载并安装Windows 评定及部署套件(ADK) 和WinPE 附加元件. ...

  3. 微软本地化项目征集新兵啦!!!另有微软官方提供的高端培训课程

    本地化开源项目新兵征集中: 微软官方文档本地化项目github首页:https://aka.ms/MVP19Q2CNTeam13O 微软件官方文档地址(可在文档中直接点击编辑):https://aka ...

  4. Linux中dlfcn库相关学习

    博客搬家,原地址:https://langzi989.github.io/2017/10/16/Unix中dl库学习/ 在linux中静态链接库和动态链接库是进程之间代码共享的两种方式.Linux在& ...

  5. 微软官方提供的免费正版的虚拟机

    官方虚拟机 Virtual Machines - Microsoft Edge Developer These virtual machines expire after 90 days. We re ...

  6. win10电脑开机绕过密码自动登录,微软官方提供修改注册表跳过登录设置方法

    有时候电脑异常重启,默认开机后由于必须登录导致很多开机启动项无法自动运行失去远程控制. 而且之前使用 netplwiz 用户账户设置自动登录的方法已经不能用了. 最新电脑自动登录设置方法: 计算机\H ...

  7. java ecdh_Jecc(java椭圆曲线加密库)学习笔记及ECDH实现

    C++椭圆曲线库下载网址http://sourceforge.net/projects/libecc/files/,打开之后右边显示: 点击红框里面链接:http://sourceforge.net/ ...

  8. 【微软官方】VC++运行库支持库

    Microsoft Visual C++ 2005 Redistributable Package (x86) https://download.microsoft.com/download/5/2/ ...

  9. bfv同态加密_微软同态加密库SEAL使用

    近期刚接触SEAL库,本文记录该库的使用方法,具体的同态加密的原理不过多介绍,若有错误,请各位大佬批评指正. SEAL(Simple Encrypted Arithmetic Library)是微软开 ...

最新文章

  1. 使用Capture画原理图
  2. k-means算法的理解与实现
  3. 为什么Map桶中个数超过8才转为红黑树
  4. Lucene索引库的维护功能实现
  5. 2019 最全阿里天猫Java 3面真题,含面试题答案!
  6. 河南淅川高考成绩查询2021,2021年河南高考成绩查询网址,河南高考成绩查询系统时间安排...
  7. 动画演示 Delphi 2007 IDE 功能[6] - 快速查看 Delphi 所有的核心数据类型
  8. mybatis-plus 自定义QueryWrapper(一)实现查询函数
  9. 从单张图重建三维人体模型综述(五)
  10. DO280介绍红帽OPENSHIFT容器平台--管理OpenShift与课外补充
  11. WORD导出PDF生成书签
  12. 数字电路设计总结(一):组合逻辑和同步时序设计
  13. java 二义性_Java接口默认方法带来的问题分析【二义性问题】
  14. 陀螺年度好文回顾|区块链跨链互操性的意义和应用案例
  15. 基于神经网络的智能对话系统(二)——机器学习背景知识
  16. 景德镇人都应该知道的一个历史人物--唐英
  17. 使用go语言编写一个播放器
  18. 浅谈LCA的几种算法
  19. C#快速扫描线算法——求取倾斜四边形与图片像素点交叠区域
  20. 怎样将表格拆分为多个独立工作簿

热门文章

  1. 选择、插入、冒泡排序实现和比较
  2. 输入框内禁止输入特殊字符
  3. Python 线性插值
  4. MOOC 哈工大苏小红C语言 第四周在线编程
  5. 《那些年啊,那些事——一个程序员的奋斗史》连载再开感言
  6. SE群体的几何级数增长
  7. c语言怎么把字节的高低位互换,算法——字节高低位交换
  8. vb 6.0服务器组件选哪个,Visual Basic6.0
  9. 派生方法的实战演练, 封装,多态,反射
  10. cookie localStorage sessionStorage _(¦3」∠)_ 看完你居然就懂了!!!