求大神解决SOCKET的有关问题

求大神解决SOCKET的问题
本帖最后由 qianfeng5511 于 2013-09-03 15:20:22 编辑
这里有一段接口业务的问题

接口传输方式:socket
协议:tcp/ip

接口需求是这样说的:
对报文接口,采用3des算法,数据发送方需先对报文头中账号和密码域使用数据密钥进行加密,再使用MAC密钥对报文头和报文体进行加押,密押经BCD扩展以后以16个字节方式传送。

请大家帮我分析一下这个需求到底是要怎么计算的 ,还有 以16个字节方式传送是什么意思?

万分感谢!

------解决方案--------------------
16字节是指的对齐方式吧?
------解决方案--------------------
引用:
Quote: 引用:

16字节是指的对齐方式吧?

请问16字节是对齐方式的话 是指16字节为一行吗

不是这样的吧!

应为是扩展了的BCD码的!
四个字节,经过BCD码扩展成16个字节的!
你google下这个bcd码吧!
我也没有具体研究过,提示就这么多了


------解决方案--------------------
本人对SOCKET通讯协议在实际工作中的“多么痛的领悟”:
解释千句不如举例一句;
举例千句不如源码一行;
源码千行不如抓包一次!

特与帖主共勉!

求大神解决SOCKET的有关问题
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

16字节是指的对齐方式吧?

请问16字节是对齐方式的话 是指16字节为一行吗

不是这样的吧!

应为是扩展了的BCD码的!
四个字节,经过BCD码扩展成16个字节的!
你google下这个bcd码吧!
我也没有具体研究过,提示就这么多了


BCD码参考下面:(怕就怕此BCD非彼BCD!)
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
unsigned int iv,i;
unsigned char BCD[5];//定长10位BCD码
unsigned char sv[11];
void main() {
    iv=123456789;//最大10位无符号正整数
    //INT2BCD
    sprintf(sv,"%010u",iv);
    for (i=0;i<10;i+=2) {
        BCD[i/2]=(sv[i]<<4)
------解决方案--------------------
(sv[i+1]&0x0F);
    }
    printf("BCD=%02x%02x%02x%02x%02x\n",BCD[0],BCD[1],BCD[2],BCD[3],BCD[4]);
    //BCD2INT