public JWT parse(String token) {
		Assert.notBlank(token, "Token String must be not blank!");
		final List<String> tokens = splitToken(token);
		this.tokens = tokens;
		this.header.parse(tokens.get(0), this.charset);
		this.payload.parse(tokens.get(1), this.charset);
		return this;
	}
@Test
	public void parseTest() {
		final String rightToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9." +
			"eyJzdWIiOiIxMjM0NTY3ODkwIiwiYWRtaW4iOnRydWUsIm5hbWUiOiJsb29seSJ9." +
			"U2aQkC2THYV9L0fTN-yBBI7gmo5xhmvMhATtu8v0zEA";

		final JWT jwt = JWT.of(rightToken);

		assertTrue(jwt.setKey("1234567890".getBytes()).verify());

		//header
		assertEquals("JWT", jwt.getHeader(JWTHeader.TYPE));
		assertEquals("HS256", jwt.getHeader(JWTHeader.ALGORITHM));
		assertNull(jwt.getHeader(JWTHeader.CONTENT_TYPE));

		//payload
		assertEquals("1234567890", jwt.getPayload("sub"));
		assertEquals("looly", jwt.getPayload("name"));
		assertEquals(true, jwt.getPayload("admin"));
	}