Page 1 of 1

Error when generating CMAC

Posted: Mon Mar 13, 2017 1:48 am
by Tinatco
I have to generate CMAC in my applet.But I encountered some problems when doing this and I can't find where I made mistake. Here is my code:

Code: Select all

 ...
 
 Zeros = { 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00}           
 SecretKeySpec desSK = new SecretKeySpec(KeySession,0, 8,"DES");
 Cipher DesCipher = Cipher.getInstance("DES/CBC/NoPadding", "SunJCE");
           
 Spec = new IvParameterSpec(Zeros);
 DesCipher.init(Cipher.ENCRYPT_MODE, desSK,Spec);
           
 byte ForLastBlock[] = DesCipher.doFinal(data, 0, 8);
 cipher = Cipher.getInstance("DESede/CBC/NoPadding", "SunJCE");
 Spec = new IvParameterSpec(ForLastBlock);
 cipher.init(Cipher.ENCRYPT_MODE, getKeySpec(KeySession), Spec);
  byte cMac[] = cipher.doFinal(data, 8, 8);   
  ...
   


Hope someone help me out.

Re: Error when generating CMAC

Posted: Mon Mar 13, 2017 4:21 am
by JCaberham
Your computation method has something wrong. You should notice that: the last block is DES3 encrypted, ICV is last calculated C_MAC