ansi x9.9 MAC算法(转载)

MAC算法


void xor(unsigned char *input1,unsigned char *input2,unsigned char *output,int len)
{
   while (len) {
       *output++=*input1++^*input2++;
      len--;
    }
}
/*
*@brief: 根据输入数据计算MAC,初始IV向量默认为"x00x00x00x00x00x00x00x00"
*@param: sMacKey 密钥
*@param: pInData 输入数据
*@param: iInLen 输入数据长度
*@param: pRetData 计算出来的MAC
*@调用自定义xor和des函数
*/

void MacArithmetic(unsigned char *sMacKey,unsigned char *pInData,int iInLen,unsigned char *pRetData)
{
//MAC算法:
//将字符串pInata分为8字节为单位的数据块,不足补x00,分别标号为D1,D2,D3,...,Dn
//设置初始向量E0="x00x00x00x00x00x00x00x00"
//将E0^D1 —---->E1(E0,D1异或的后结果经des加密得到E1)
//将E1^D2 ----->E2
//如此类推,知道得出En结束,En即是计算出来的MAC

unsigned char sUpData[512];
unsigned char sData[20];
unsigned char sXorData[20];
unsigned char sDesData[20];
int i,n,iNum;
memset(sUpData,0,sizeof(sUpData));
memset(sData,0,sizeof(sData));
memset(sXorData,0,sizeof(sXorData));
memset(sDesData,0,sizeof(sDesData));
//补全要加密数据成8倍数到sUpData,不足补x00
memcpy(sUpData,pInData,iInLen);
iNum = iInLen%8;
if (iNum == 0)
n=iInLen/8;
else {
n=iInLen/8+1;
memcpy(sUpData+iInLen,"x00x00x00x00x00x00x00x00",8-iNum);
}
printf("n=%dnsUpData=[%s]n",n,sUpData);
//轮循异或,加密
memcpy(sDesData,"x00x00x00x00x00x00x00x00",8); //初始向量赋给sDesData
for(i=0;i<n;i++)
{
//拷贝sUpData中下一个8位到sData
memcpy(sData,sUpData+i*8,8);
xor(sDesData,sData,sXorData,8); //异或
Des(sXorData,sDesData,sMacKey,1); //des加密
}
memcpy(pRetData,sDesData,8);
return ;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: ANSI X3.263是一种与电信和数据通信有关的标准。这个标准规定了一个双模调制解调器的技术要求和测试方法。它适用于使用交流电源和数字通信信道的调制解调器。标准涵盖了调制解调器的硬件和软件方面,包括电源要求、接口、功能、性能指标以及测试和验证方法。 ANSI X3.263定义了一种采用一套特定的调制和解调方案的调制解调器。该标准规定了不同调制模式下的符号速率、波特率以及调制和解调方案。它还要求调制解调器提供一定的功能和接口,以支持数据传输的特定要求,包括错误校验、流量控制和错误恢复等。 此外,ANSI X3.263还规定了调制解调器的性能指标,如误码率、灵敏度、频率响应等。通过这些指标,可以评估调制解调器的性能,并确保其在实际应用中能够满足通信需求。 最后,ANSI X3.263还定义了一套测试方法,用于验证调制解调器是否符合标准要求。这些测试包括功能测试、性能测试和接口测试等。通过进行这些测试,可以确定调制解调器是否按照标准要求设计和制造,并验证其在实际应用中的可靠性和性能。 总而言之,ANSI X3.263是一项关于调制解调器的标准,规定了调制解调器在硬件、软件、性能和测试等方面的要求。这个标准的制定和遵循,有助于确保调制解调器的功能和性能达到预期,并促进电信和数据通信的发展和应用。 ### 回答2: ANSI X3.263是美国国家标准化协会(ANSI)制定的一项标准,主要涉及到计算机数据通信领域。 ANSI X3.263标准是一种称为二进制同步通信的协议,用于在计算机和外部设备之间进行数据传输。它规定了数据传输的格式、位率、帧结构和错误检测等细节。 在使用ANSI X3.263进行数据传输时,数据被分割成固定长度的数据帧。每个数据帧由同步字符、有效数据和错误检测字段组成。同步字符用于帧的同步,以确保发送和接收设备的时钟同步。有效数据字段包含要传输的实际数据,而错误检测字段用于检测传输过程中可能发生的错误。 ANSI X3.263标准还规定了位率,即每秒传输的位数。位率根据设备和传输距离的要求而定,一般可在100 bps到1200 bps之间。 此外,ANSI X3.263还提供了一套错误检测和纠正机制,确保数据的完整性和准确性。根据标准的要求,接收方可以利用校验码来检测并纠正传输中的错误。 总之,ANSI X3.263是一项用于计算机数据通信的标准,它规定了数据传输的格式、位率、帧结构和错误检测等细节,为数据的可靠传输提供了基础。 ### 回答3: ANSI X3.263是美国国家标准学会(ANSI)制定的一个文件传输协议标准。该协议定义了在计算机网络中进行文件传输的规范和要求。 ANSI X3.263协议是一种可靠的文件传输协议,它确保了文件的完整性和可靠性。该协议使用了数据包校验和错误校正技术,以确保传输的文件不会损坏或丢失。 该协议还规定了文件传输的一些基本要求,例如数据传输的起点和终点都必须使用相同的协议版本,以确保传输的兼容性。此外,该协议还规定了数据包的最大长度、确认机制、错误重传等相关细节,以提高传输的效率和可靠性。 ANSI X3.263协议在文件传输方面有着广泛的应用。它可以用于各种传输场景,包括局域网、广域网和互联网等。该协议为文件传输提供了一个标准的规范,使得不同厂商和设备可以相互兼容和通信。通过使用该协议,用户可以方便地进行文件的传输和共享,提高了数据传输的效率和方便性。 总之,ANSI X3.263是一个文件传输协议标准,它定义了文件传输的规范和要求,确保了传输的完整性和可靠性。该协议在文件传输方面有着广泛的应用,提供了一个标准的规范,使得不同设备和厂商可以方便地进行文件传输和共享。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值