CryptGenRandom生成asp.net会话id

CryptGenRandom生成asp.net会话id,asp.net,c++,session,Asp.net,C++,Session,是否有人有CryptGenrRandom类的工作示例来生成会话id(需要在我的iis模块中使用) 我尝试了这段代码,但它运行得不太好(我从msdn获得),这个示例对我不起作用() 所以,如果有人知道如何使用这个类生成sessionid,请告诉我 反正是tnx 你没有说失败是什么-但我要尝试一下-我们在过去的returingNTE\u BAD\u KEYSET中遇到了CRYPT\u NEWKEYSET的问题-如果需要指定CRYPT\u NEWKEYSET或插入标志(CRYPT\u VERIFYCO

是否有人有CryptGenrRandom类的工作示例来生成会话id(需要在我的iis模块中使用)

我尝试了这段代码,但它运行得不太好(我从msdn获得),这个示例对我不起作用()

所以,如果有人知道如何使用这个类生成sessionid,请告诉我


反正是tnx

你没有说失败是什么-但我要尝试一下-我们在过去的returing
NTE\u BAD\u KEYSET
中遇到了
CRYPT\u NEWKEYSET
的问题-如果需要指定
CRYPT\u NEWKEYSET
或插入标志(
CRYPT\u VERIFYCONTEXT | CRYPT\u NEWKEYSET
)并再次调用
cryptaccesscontext
,以响应失败

比如:

BOOL bResult = CryptAcquireContext(&m_hProv, pszContainer, pszProvider, dwProviderType, dwFlags);
if (!bResult) 
{
    hr = GetLastError(); //already returns an HRESULT

    if (NTE_BAD_KEYSET != hr) return(hr);

    dwFlags |= CRYPT_NEWKEYSET;
    bResult = CryptAcquireContext(&m_hProv, pszContainer, pszProvider, dwProviderType, dwFlags);
    if (!bResult) return(GetLastError());
}

我发布的代码的问题是,我得到了奇怪的输出(如十六进制字符串,我真的不知道如何将其转换为会话字符串(数字和alfabet字符),第二个问题是字符串在AF中不是很大(我需要15个以上的字符输出)CoDebug的例子的问题是,如果在PBPBUTHEDE KEYBROBB =新字节[DWSME]失败,则错误是SeXExtExpReop01.EXE中的0x7C812AFB未处理的异常:微软C++异常:STD::BADYOLL在内存位置0x012FE08……TNX,对于任何帮助字节,有一个原因,您不能仅仅是GUID?见CoCreateGuid()-无论如何,它似乎比随机数更合适-您可以多次使用相同的随机数会话id-guid基本上保证是唯一的-并且或多或少是随机的。guid可能是可预测的,因此会话id可能有些不安全。
BOOL bResult = CryptAcquireContext(&m_hProv, pszContainer, pszProvider, dwProviderType, dwFlags);
if (!bResult) 
{
    hr = GetLastError(); //already returns an HRESULT

    if (NTE_BAD_KEYSET != hr) return(hr);

    dwFlags |= CRYPT_NEWKEYSET;
    bResult = CryptAcquireContext(&m_hProv, pszContainer, pszProvider, dwProviderType, dwFlags);
    if (!bResult) return(GetLastError());
}