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