1 2 29 30 package com.jcraft.jsch.jce; 31 32 import com.jcraft.jsch.MAC; 33 import javax.crypto.*; 34 import javax.crypto.spec.*; 35 36 public class HMACMD5 implements MAC{ 37 private static final String name="hmac-md5"; 38 private static final int BSIZE=16; 39 private Mac mac; 40 public int getBlockSize(){return BSIZE;}; 41 public void init(byte[] key) throws Exception { 42 if(key.length>BSIZE){ 43 byte[] tmp=new byte[BSIZE]; 44 System.arraycopy(key, 0, tmp, 0, BSIZE); 45 key=tmp; 46 } 47 48 SecretKeySpec skey=new SecretKeySpec(key, "HmacMD5"); 49 mac=Mac.getInstance("HmacMD5"); 50 mac.init(skey); 51 } 52 53 private final byte[] tmp=new byte[4]; 54 public void update(int i){ 55 tmp[0]=(byte)(i>>>24); 56 tmp[1]=(byte)(i>>>16); 57 tmp[2]=(byte)(i>>>8); 58 tmp[3]=(byte)i; 59 update(tmp, 0, 4); 60 } 61 public void update(byte foo[], int s, int l){ 62 mac.update(foo, s, l); 63 } 64 public void doFinal(byte[] buf, int offset){ 65 try{ 66 mac.doFinal(buf, offset); 67 } 68 catch(ShortBufferException e){ 69 } 70 } 71 72 public String getName(){ 73 return name; 74 } 75 } 76 | Popular Tags |