mac算法求教

banmiton 2012-02-28 09:10:27
算法:将需要加密的数据分成若干个16字节的数据段,不足16字节的用0x00补齐16字节。然后将每个数据段的前8字节与后8字节进行异或操作,异或完成后,16字节的数据段长度变为8字节,再将所有8字节的数据段进行异或操作,最终得到一个8字节的数据段,最后BCD转ASCII得到16位MAC码。请问各位大侠该算法如何实现?
...全文
152 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kevin_qing 2012-02-28
  • 打赏
  • 举报
回复
if(size>0){
b2=*pb;
--size;
++pb; //<<<<<<<写掉了一句
Kevin_qing 2012-02-28
  • 打赏
  • 举报
回复
byte mac(const void * p,size_t size){
const byte *pb=(const byte*)p;
byte result=0;
while(size){
byte b1=*pb;
++pb;
--size;
byte b2;
if(size>0){
b2=*pb;
--size;
}else
b2=0;
result^=b1^b2;

}
return result;
}
AIGPTchina 2012-02-28
  • 打赏
  • 举报
回复
提问,你说下MAC算法的具体实现,会有人帮你写出代码来。如果你说不出来。那就木有办法了。
qq120848369 2012-02-28
  • 打赏
  • 举报
回复
哪里不懂, 8字节与8字节异或可以1个字节1个字节的异或, 一个循环就完事了.

然后得到了一堆8字节片段, 求它们所有的异或, 那就双层循环啊.

最后8字节, BCD是什么东西, 要把每一个字节转成16进制字符串的意思么? 那就一个字节一个字节的转呗, 分别取每个字节高低4位与'0'或者'A'加一下就变成字符了.

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧