中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
报文鉴别码(java 实现)
作者:未知 时间:2005-09-13 23:36 出处:Blog.ChinaUnix.net 责编:chinaitpower
              摘要:报文鉴别码(java 实现)
报文鉴别在身份认证中占重要位置,是认证系统的一个重要环节,在金融和商业系统中广泛应用。

      报文鉴别常用报文鉴别码(Message Authentication Code,即MAC)作为鉴别的基础,其基本原理是:用一个密钥((private Key))生成一个小数据块附加在要传输的报文后面。这种技术是假定通讯双方共享一个密钥K,当通讯的一方要给另一方传输数据M时,通过特定的算法计算出该报文M的MAC=F(K,M),这里的F就是指鉴别运算函数,然后报文数据M和MAC一起传送给另一方。当另一方收到数据时,先用同样的算法F计算MAC,和传输过来的MAC进行比较,如果相同,则认为数据是正确的。

    鉴别函数常被认为是加密算法的一种,但是区别在于它不用于逆运算,有一定的安全性。

    通常对于不同的应用系统采用各自特定的鉴别函数,这样在一定程度上保证了数据的安全性。

    从j2sdk1.4以后,java提供了类javax.crypto.Mac类报文鉴别

    byte[] macData = "this is a mac test".getBytes();

   //get a instance of Mac, using HmacMD5 algorithm

   Mac mac = Mac.getInstance("HmacMD5");

  //init the IV of the algorithm, 8 bytes.  may read from file
   byte[] ivInitKey = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 };


   IvParameterSpec spec = new IvParameterSpec(ivInitKey);

  // the secrete key bytes of the Mac validation, May read from file too
   byte[] keyBytes = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f };

  //generate the secrete Key Object using secrete bytes and  DESede algorithm
   SecretKey key = new SecretKeySpec(keyBytes, "DESede");

  // init Mac
   mac.init(key, spec);

   byte[] macCode = mac.doFinal(macData);

macCode 就是生成的Mac,用同样的密钥能产生同样的mac。 通讯双方只要保证用同样的密钥就能保证得到同样的Mac,达到报文验证的目的。

看来看去,这和网络上常用的checksum原理是一样的。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有