Java Mac 加密方法

kingo_liang 2008-03-30 06:52:48
想要一个Java Mac加密和方法

支持Ansi X9.9的Mac加密

有方法提供或者有解决方案提供者重赏:)
...全文
1024 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gjgj3368 2008-04-03
  • 打赏
  • 举报
回复
学习
xql80329 2008-04-02
  • 打赏
  • 举报
回复
百度 一下 网上N多
chen09 2008-04-02
  • 打赏
  • 举报
回复
csdn别处c&p来的C代码,小改一下就成。

void xor(unsigned char *input1,unsigned char *input2,unsigned char *output,int len)
{
while (len) {
*output++=*input1++^*input2++;
len--;
}
}


/*
*@brief: 根据输入数据计算MAC,初始IV向量默认为"\x00\x00\x00\x00\x00\x00\x00\x00"
*@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="\x00\x00\x00\x00\x00\x00\x00\x00"
//将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,"\x00\x00\x00\x00\x00\x00\x00\x00",8-iNum);
}

printf("n=%d\nsUpData=[%s]\n",n,sUpData);

//轮循异或,加密
memcpy(sDesData,"\x00\x00\x00\x00\x00\x00\x00\x00",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 ;
}
xlongbuilder 2008-03-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lbfhappy 的回复:]
还是看API去吧,很详细的
[/Quote]
千里冰封820 2008-03-30
  • 打赏
  • 举报
回复
还是看API去吧,很详细的

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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