易截截图软件、单文件、免安装、纯绿色、仅160KB

Java中的mac计算

          报文鉴别在身份认证中占重要位置,是认证系统的一个重要环节,在金融和商业系统中广泛应用。
          报文鉴别常用报文鉴别码(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原理是一样的。


相关文档:

java入门

 Java学习从入门到精通 
一、 JDK (Java Development Kit) 
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的J ......

Java SE Static Inner

/*内部类使用示例*/
package demo;
class Outer{
 int outer_i=100;
 static int outer_j=200;
 final int outer_k=300;
 void test(){
  Inner in = new Inner();
  in.display();
 }
 static class Inner{
  void display(){
    ......

在 Eclipse 中设置 java 虚拟机内存的方法

        在实际的开发中, jvm 默认的内存大小是不够的,需要自定义设置。可按如下的方法进行设置:
        第一、进入到指定运行文件的 run configurations, 就会弹出运行设置对话窗体
        第二、在 ja ......

java设计模式简介(2)

集合模式:
      作用:处理由一些对象组成的组或者集合;处理如何组织类和对象来形成更大结构的细节;关注设计一个无冗余数据类的最有效方法;允许在一组对象构成的集合上定义操作。
1.       合成:允许单个对象合成对象以一种统一的方式被访问。换句话说,合 ......

JAVA排序汇总

import
java.util.Random;
 
/**
 
*

排序测试类
 
*

 
*

排序算法的分类如下:
 
*

1.
插入排序(直接插入排序、折半插入排序、希尔排序);
 
*

2.
交换排序(冒泡泡排序、快速排序);
 
*

3.
选择排序(直接选择排序、堆排序);
  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号