/******************************************************************************* * Copyright (c) 2005, 2014 springside.github.io * * Licensed under the Apache License, Version 2.0 (the "License"); *******************************************************************************/ package org.springside.modules.utils.security; import static org.assertj.core.api.Assertions.*; import org.junit.Test; import org.springside.modules.utils.text.EncodeUtil; public class CryptoUtilTest { @Test public void mac() { String input = "foo message"; // key可为任意字符串 // byte[] key = "a foo key".getBytes(); byte[] key = CryptoUtil.generateHmacSha1Key(); assertThat(key).hasSize(20); byte[] macResult = CryptoUtil.hmacSha1(input.getBytes(), key); System.out.println("hmac-sha1 key in hex :" + EncodeUtil.encodeHex(key)); System.out.println("hmac-sha1 in hex result :" + EncodeUtil.encodeHex(macResult)); assertThat(CryptoUtil.isMacValid(macResult, input.getBytes(), key)).isTrue(); } @Test public void aes() { byte[] key = CryptoUtil.generateAesKey(); assertThat(key).hasSize(16); String input = "foo message"; byte[] encryptResult = CryptoUtil.aesEncrypt(input.getBytes(), key); String descryptResult = CryptoUtil.aesDecrypt(encryptResult, key); System.out.println("aes key in hex :" + EncodeUtil.encodeHex(key)); System.out.println("aes encrypt in hex result :" + EncodeUtil.encodeHex(encryptResult)); assertThat(descryptResult).isEqualTo(input); } @Test public void aesWithIV() { byte[] key = CryptoUtil.generateAesKey(); byte[] iv = CryptoUtil.generateIV(); assertThat(key).hasSize(16); assertThat(iv).hasSize(16); String input = "foo message"; byte[] encryptResult = CryptoUtil.aesEncrypt(input.getBytes(), key, iv); String descryptResult = CryptoUtil.aesDecrypt(encryptResult, key, iv); System.out.println("aes key in hex :" + EncodeUtil.encodeHex(key)); System.out.println("iv in hex :" + EncodeUtil.encodeHex(iv)); System.out.println("aes encrypt in hex result :" + EncodeUtil.encodeHex(encryptResult)); assertThat(descryptResult).isEqualTo(input); } }