资讯专栏INFORMATION COLUMN

数据防篡改加验签基本方案

Michael_Ding / 1340人阅读

方案

加签

待加签数据整理为String

(待加签数据+密钥)一起转化为MD5

结果写入数据库

验签

待验签数据整理为String(逻辑必须同加签一致)

(待验签数据+密钥)一起转化为MD5

比较与原签是否一致

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));
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/77290.html

相关文章

  • 一种基于http协议的敏感数据传输方案

    摘要:比如加密算法但是加密也存在局限性,需要定期维护。当然聪明的你可能会说,那我就使用非对称加密算法,比如好了。所以本次结合了和来实现我们的数据传输。发送方接收到请求返回结果后,通过约定的方式对返回结果进行处理,以供后续使用。 最近公司需要通过公网与其它平台完成接口对接,但是基于开发时间和其它因素的考虑,本次对接无法采用https协议实现。既然不能用https协议,那就退而求其次采用http...

    yagami 评论0 收藏0
  • 简单的视频图像篡改方法

    摘要:本文中就以算法压缩图像的过程为例,简单介绍一下图像防篡改的方法。这一步不在本次视频防篡改算法中,不做过多介绍。这一步在本次的视频图像防篡改中起到了至关重要的作用。而图像中的中频部分是比较适合进行防篡改修改的部分。 大家都知道视频中图像压缩的重要性,但是图像的安全性也至关重要。特别是在一些需要知识产权保护的视频文件中(比如教育类的视频就是其中的典型),对于视频信息的保护就显得尤为重要。那...

    lunaticf 评论0 收藏0
  • Python脚本——信手拈来的自动化测试工具

    摘要:快速高效的测试工具及脚本,能使程序猿的开发工作事半功倍。笔者构想与编写整个自动化测试脚本只花费了几个工作日中的零碎时间,但是使用自动化测试脚本后让整个开发测试周期节省的时间远超几个工作日。 ...

    张红新 评论0 收藏0
  • 微软为Azure推出了一种新的“篡改”对象存储服务

    摘要:微软公司推出了,这是平台上一种新的防篡改存储服务,该服务用于保护敏感数据。微软表示,还提供了许多可管理功能方面的优势。微软在一篇博客文章中解释道同样的存储环境可用于标准及不可变存储。微软针对行业的云产品线在不断地丰富,是其中最新的成员。微软公司推出了Immutable Blob Storage,这是Azure平台上一种新的防篡改存储服务,该服务用于保护敏感数据。此次推出的这项服务主要针对的是...

    eternalshallow 评论0 收藏0
  • 探讨一下常见支付系统的对外接口

    摘要:相比起来,支付宝的下单动作由于是在前端调用的,因此,站点需要将自己的订单信息返回到客户端,然后又客户端发起调用支付宝的下单接口,这样一来,如果安全加密等做的不到位,很容易被恶意用户篡改信息。 作为一个具备用户交易能力的网站,丰富它的支付渠道对于获客和提高日活都有不可估量的积极作用。算起来,我接触过的支付系统也有几十个了,在这里总结一下我所接触过的支付系统对外接口的设计方案。 1. 支付...

    warnerwu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<