加签数据库
验签性能
public static String sign(String text, String salt, String inputCharset) { return DigestUtils.md5Hex(getContentBytes(text + salt, inputCharset)); } public static boolean verify(String text, String sign, String salt, String inputCharset) { String mysign = DigestUtils.md5Hex(getContentBytes(text + salt, inputCharset)); return mysign.equals(sign); } private static byte[] getContentBytes(String content, String charset) { if (charset == null || "".equals(charset)) { return content.getBytes(); } try { return content.getBytes(charset); } catch (UnsupportedEncodingException e) { throw new RuntimeException("MD5签名过程当中出现错误,指定的编码集不对,您目前指定的编码集是:" + charset); } }
执行100万组加验签操做,本机用时1400ms。也就是平均每组加验签用时0.0014ms(粗略估计)。测试
public static void main(String[] args) { FinanceAccount fa = new FinanceAccount(); fa.setBalance(BigDecimal.TEN); fa.setLocking(BigDecimal.TEN); String salt = "dskfnweabghcxoihvwei"; String signature = SecurityUtil.sign(fa.toSignString(), salt, null); int i = 0; long start = System.currentTimeMillis(); while (++i < 1000000) if (SecurityUtil.verify(fa.toSignString(), signature, salt, null)) { SecurityUtil.sign(fa.toSignString(), salt, null); } else { System.out.println("verification fail!"); } } System.out.println((System.currentTimeMillis() - start)); }