aes128-cmac java 代码实现
时间: 2023-08-11 12:08:32 浏览: 247
以下是使用Java实现AES-CMAC算法的示例代码:
```java
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
public class AesCmacExample {
public static void main(String[] args) throws Exception {
byte[] key = "0123456789abcdef".getBytes(StandardCharsets.UTF_8); // 16 bytes key
byte[] data = "Hello, world!".getBytes(StandardCharsets.UTF_8); // sample data
byte[] cmac = aesCmac(key, data);
System.out.println(byteArrayToHex(cmac)); // print CMAC in hex format
}
public static byte[] aesCmac(byte[] key, byte[] data) throws Exception {
SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
Mac mac = Mac.getInstance("AESCMAC");
mac.init(keySpec);
return mac.doFinal(data);
}
public static String byteArrayToHex(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02X", b));
}
return sb.toString();
}
}
```
上述代码中,我们使用了Java标准库中的`Mac`类来计算AES-CMAC。具体来说,我们使用了`SecretKeySpec`类来创建密钥规范,然后使用`Mac.getInstance("AESCMAC")`方法来获取AES-CMAC算法的实例。最后,我们调用`doFinal()`方法来计算CMAC值。
阅读全文