// password   密码明文   
// servertime 提交的参数之一   
// nonce      提交的参数之一   
// encode_password 输出的加密后的16进制字符串,40个字符   
// 返回 encode_password 的长度, 失败则返回0   
  
PASSENCODE_API int SinaSha1Encode(char *password, char *servertime, char *nonce, char *encode_password)   
{   
    if (encode_password)   
    {   
        encode_password[0]=NULL;   
 
       //定义要sha1的字符串   
        char pTemp[400]={0};   
       //定义返回的sha1值   
       char szHash[41] ={0};   
  
        strcpy(pTemp,password);   
        SHA1((unsigned char*)pTemp, szHash, 41);   
  
        strcpy(pTemp,szHash);   
        SHA1((unsigned char*)pTemp, szHash, 41);   
  
        strcpy(pTemp,szHash);   
        if (servertime) strcat(pTemp,servertime);   
        if (nonce) strcat(pTemp,nonce);   
 
        SHA1((unsigned char*)pTemp, szHash, 41);   
  
        strcpy(encode_password,szHash);   
  
        return strlen(encode_password);   
    }   
  
    return 0;   
}
出处:
http://blog.csdn.net/TDGX2004/archive/2011/05/28/6452021.aspx

解决方案 »

  1.   

    #region 获取由SHA1加密的字符串
    public string EncryptToSHA1(string str)
    {
                SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
                byte[] str1 = Encoding.UTF8.GetBytes(str);
                byte[] str2 = sha1.ComputeHash(str1);
                sha1.Clear();
                (sha1 as IDisposable).Dispose();
                return Convert.ToBase64String(str2);
    }
    #endregion
      

  2.   

    v2cloud 发表于2011年5月30日 9:48:41  IP:115.193.165.*举报回复删除
    nonce怎么求?
      

  3.   

    sinaSSOController.preloginCallBack({"retcode":0,"servertime":1307110421,"nonce":"XAEIZN"})
      

  4.   

    同求。,。。weibo 的密码加密算法。
      

  5.   

    同求,不过我是通过C#调MFC DLL方式来调C函数的,但是算出来的值怎么和作者算出来的值不一样,奇怪
      

  6.   

    扑捉到的http请求:CONNECT mail.qq.com:443 HTTP/1.0
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
    Proxy-Connection: Keep-Alive
    Content-Length: 0
    Host: mail.qq.com
    Pragma: no-cacheThe data sent represents an SSLv3-compatible ClientHello handshake. For your convenience, the data is extracted below.Major Version: 3
    Minor Version: 1
    Random: 4D FB 6F 79 29 08 FB BB 00 FA F1 22 35 08 E5 79 23 BF CD 75 2E 8F 4E 24 46 6E E7 65 32 E7 7F 29 
    SessionID: 1C 34 D6 6A 2A 4B 69 44 C8 86 16 24 F6 8D E9 66 F2 A9 09 5E 6A 8C 7D 2B A8 36 39 1A 9A 7C BB C0 
    Ciphers: 
    [002F] TLS_RSA_AES_128_SHA
    [0035] TLS_RSA_AES_256_SHA
    [0005] SSL_RSA_WITH_RC4_128_SHA
    [000A] SSL_RSA_WITH_3DES_EDE_SHA
    [C013] TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA
    [C014] TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA
    [C009] TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
    [C00A] TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
    [0032] TLS_DHE_DSS_WITH_AES_128_SHA
    [0038] TLS_DHE_DSS_WITH_AES_256_SHA
    [0013] SSL_DHE_DSS_WITH_3DES_EDE_SHA
    [0004] SSL_RSA_WITH_RC4_128_MD5
    返回的数据:HTTP/1.0 200 Blind-Connection Established
    FiddlerGateway: Direct
    StartTime: 23:15:05.570
    EndTime: 23:15:05.869This is a CONNECT tunnel, through which encrypted HTTPS traffic flows. To view the encrypted sessions inside this tunnel, ensure that the Tools > Fiddler Options > HTTPS > Decrypt HTTPS traffic option is checked.The data sent represents an SSLv3-compatible ServerHello handshake. For your convenience, the data is extracted below.Major Version: 3
    Minor Version: 1
    SessionID: 70 94 63 2C 55 DA 70 0F 86 5D 71 A9 2B 43 37 5B 42 50 0D 1D 47 99 96 12 DE 8A 8C 08 81 C0 91 DF 
    Random: 4D FB 6F EE AC 7E 26 F8 A0 57 0D C9 07 D3 62 57 54 FD 0E F7 18 02 F6 3C 77 A9 30 1E 9B 7E 1F C3 
    Cipher: 0x35
    请问一下,这类请求如何用 httpwebrequest来发送???