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 HMACMD596 implements MAC{ 37 private static final String name="hmac-md5-96"; 38 private static final int bsize=12; 39 private Mac mac; 40 public int getBlockSize(){return bsize;}; 41 public void init(byte[] key) throws Exception { 42 if(key.length>16){ 43 byte[] tmp=new byte[16]; 44 System.arraycopy(key, 0, tmp, 0, 16); 45 key=tmp; 46 } 47 SecretKeySpec skey=new SecretKeySpec(key, "HmacMD5"); 48 mac=Mac.getInstance("HmacMD5"); 49 mac.init(skey); 50 } 51 private final byte[] tmp=new byte[4]; 52 public void update(int i){ 53 tmp[0]=(byte)(i>>>24); 54 tmp[1]=(byte)(i>>>16); 55 tmp[2]=(byte)(i>>>8); 56 tmp[3]=(byte)i; 57 update(tmp, 0, 4); 58 } 59 60 public void update(byte foo[], int s, int l){ 61 mac.update(foo, s, l); 62 } 63 64 private final byte[] _buf16=new byte[16]; 65 public void doFinal(byte[] buf, int offset){ 66 try{ 67 mac.doFinal(_buf16, 0); 68 } 69 catch(ShortBufferException e){ 70 } 71 System.arraycopy(_buf16, 0, buf, 0, 12); 72 } 73 74 public String getName(){ 75 return name; 76 } 77 } 78 | Popular Tags |