最近在看一个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&#