免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3271 | 回复: 5
打印 上一主题 下一主题

[C] 关于电信短信网关SMGP3.0协议的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-02-08 17:16 |只看该作者 |倒序浏览
发送login包过去之后返回状态21 认证错
查看协议可能是下面这个字段出错

6.2.2 AuthenticatorClient
客户端认证码,用来鉴别客户端的合法性。
其值通过单向 MD5 hash 计算得出,表示如下:
AuthenticatorClient =MD5 ( ClientID+7 字 节 的 二 进 制 0 ( 0x00 ) + Shared
secret+Timestamp)
Shared secret 由服务器端与客户端事先商定,最长 15 字节。
此处 Timestamp 格式为:MMDDHHMMSS(月日时分秒),经 TimeStamp 字段值转换
成字符串,转换后右对齐,左补 0x30 得到。

对于该字段值的时间戳不是很明白 那句“转换后右对齐,左补 0x30 得到”是什么意思 网关那边的人压根不知道这个  麻烦做过的大侠告知一二 谢谢了

论坛徽章:
0
2 [报告]
发表于 2014-02-08 17:21 |只看该作者
本帖最后由 dw43246777 于 2014-02-08 17:26 编辑

以下本人对该字段的赋值代码:
    char tmp[34]="12345678";
    memset(tmp+8, 0, 7);
    memcpy(tmp+15, "12345678",8 ) ;
    time_t a = time(NULL);
    struct tm *time  = localtime(&a);
    char timestamp[11];
    sprintf(timestamp, "%02d%02d%02d%02d%02d",time->tm_mon+1,time->tm_mday,time->tm_hour,time->tm_min,time->tm_sec);
    printf("time:%s\n",timestamp);
    memcpy(tmp+23, timestamp, strlen(timestamp));
    UCHAR rebuf[16];
    md5_init(&ctx,tmp);
    md5_buffer_full(&ctx);
    md5_process(&ctx);
    md5_fini(&ctx,rebuf);
    int i;
    for(i=4;i<12;i++)
    {
        sprintf(logdata.log.sAuthenMD5+(i-4)*2, "%02x",rebuf);
    }

麻烦各位大神  先谢谢了

论坛徽章:
0
3 [报告]
发表于 2014-02-09 08:46 |只看该作者
自己顶~~~谁知道啊~~~HELP~~~3Q advance

论坛徽章:
0
4 [报告]
发表于 2014-02-09 13:36 |只看该作者
没玩过,从字面上猜,如果你的client key是定长的话,是不是因为seckey不是定长,所以事实上是在seckey的后面用0x30补齐到15位,加上时间戳字符串,然后对一个定长的字符串做md5?

有补齐就有定长,你的表述里面我看不出这个定长是多少.

论坛徽章:
0
5 [报告]
发表于 2014-02-11 09:06 |只看该作者
协议没有提到这个timestamp长度是多少  这个0x30该怎么补呢 也没有提到需要MD5加密的数据长度是多少
我现在登录都是返回的认证错  卡在这了

论坛徽章:
0
6 [报告]
发表于 2014-02-11 16:02 |只看该作者
有没做过的大侠教我下啊  谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP