110,571
社区成员
发帖
与我相关
我的任务
分享
string pass = "1253589708.112012-04-23T06:06:58.239Z123456";
byte[] temp = Encoding.Default.GetBytes(pass);
HashAlgorithm sha1 = new SHA1CryptoServiceProvider();
temp = sha1.ComputeHash(temp);
//temp = {149,251,126,50,127,208,67,253,245,220,138,241,147,210,149,181,9,154,56,43};
//想得到的结果
//byte[] ByteArray2 = new byte[]{157, 159, 129, 122, 94, 82, 44, 50, 207, 93, 154, 68, 109, 31, 150, 190, 66, 178, 253, 8};
CString strInsert;
strInsert = szOut;
strInsert = "1253589708.112012-04-23T06:06:58.239Z123456";
//=================================================SHA-1加密
ZeroMemory(szCode, sizeof(szCode));
SHA1_CONTEXT ctx;
int nLen = strInsert.GetLength();
sha1_init(&ctx);
memcpy(szCode, strInsert, nLen);
sha1_write(&ctx, (unsigned char *)szCode, nLen);
sha1_final(&ctx);
UCHAR szOutput[21];
ZeroMemory(szOutput, sizeof(szOutput));
memcpy(szOutput, ctx.buf, sizeof(szOutput) - 1);
//=================================================SHA-1加密
strInsert = szOutput;
CString strInsert;
//strInsert = szOut;
strInsert = strInsert + strTime + strPass;
//=================================================SHA-1加密
CString CYYTThread::Get_Password_Digest(CString strNonce,CString strTime,CString strPass)
{
strNonce = "MTI1MzU4OTcwOC4xMQ==";
strTime = "2012-04-23T06:06:58.239Z";
strPass = "123456";
char szCode[1024];
ZeroMemory(szCode, sizeof(szCode));
memcpy(szCode, strNonce, strNonce.GetLength() - 2);
BYTE szOut[1024];
ZeroMemory(szOut, sizeof(szOut));
CBase64 m_base64;
m_base64.Decode(szCode, szOut);
szOut[20] = '\0';
//=================================================Base64解密
CString strInsert;
//strInsert = szOut;
strInsert = strInsert + strTime + strPass;
//=================================================SHA-1加密
ZeroMemory(szCode, sizeof(szCode));
SHA1_CONTEXT ctx;
int nLen = strInsert.GetLength();
sha1_init(&ctx);
memcpy(szCode, strInsert, nLen);
sha1_write(&ctx, (unsigned char *)szCode, nLen);
sha1_final(&ctx);
UCHAR szOutput[21];
ZeroMemory(szOutput, sizeof(szOutput));
memcpy(szOutput, ctx.buf, sizeof(szOutput) - 1);
//=================================================SHA-1加密
strInsert = szOutput;
//=================================================Base64加密
nLen = strInsert.GetLength();
BYTE szSrc[1024];
ZeroMemory(szSrc, sizeof(szSrc));
char szBase64Out[1024];
ZeroMemory(szBase64Out, sizeof(szOut));
memcpy(szSrc, strInsert, nLen);
m_base64.Encode(szSrc, nLen, szBase64Out);
CString strOut = szBase64Out;
int nEnd = strOut.GetLength() % 3 + 1;
int i;
for(i=0; i<nEnd; i++)
{
strOut += "="; //当代码量不是3的整数倍时,代码量/3的余数自然就是2或者1。转换的时候用=结束
}
//=================================================Base64加密
return strOut; //以等号作为结束符号
}