资讯专栏INFORMATION COLUMN

基于注解的 java 加签验签框架 checksum

jindong / 916人阅读

摘要:基于注解生成加签验签。后来发现如下的问题有些字段太大,不想参与验签,但是无法方便的调整。感觉这样有很大的弊端,完全失去了灵活性。

checksum

基于 java 注解生成加签验签 checksum。

开源地址:github checksum
创作缘由

原来的代码中,checksum 的生成是用的工具类方法。

后来发现如下的问题:

有些字段太大,不想参与验签,但是无法方便的调整。

不同系统的 checksum 字段不同,只好把工具方法 copy 过去,改来改去。

感觉这样有很大的弊端,完全失去了灵活性。

特性

基于注解的 checksum 加签验签

Fluent 流式语法

支持灵活的策略自定义

更新记录
更新记录
快速开始 环境要求

jdk7+

maven 3.x+

引入

    com.github.houbb
    checksum
    0.0.1
定义待加签的示例对象

User.java

public class User {

    @CheckField
    private String name;

    @CheckField
    private String password;

    private String address;

    @Checksum
    private String checksum;

    //Getter & Setter
    //toString()
}
核心注解

@CheckField 表示参与加签的字段信息

@Checksum 表示加签结果存放的字段

调用测试
package com.github.houbb.checksum.core;

import com.github.houbb.checksum.model.User;
import org.junit.Assert;
import org.junit.Test;

/**
 * @author binbin.hou
 * @since 0.0.1
 */
public class ChecksumBsTest {

    @Test
    public void checksumTest() {
        User user = buildUser();
        final String checksum = ChecksumBs
                .newInstance(user)
                .checksum();

        Assert.assertEquals("8D62F2BC49A9AB51280C8F42A483ED54", checksum);
    }

    @Test
    public void fillTest() {
        User user = buildUser();
        ChecksumBs.newInstance(user).fill();

        Assert.assertEquals("User{name="ryo", password="1234", address="china", checksum="8D62F2BC49A9AB51280C8F42A483ED54"}",
                user.toString());
    }

    /**
     * 构建示例对象
     * @return 构建示例对象
     */
    private User buildUser() {
        User user = new User();
        user.name("ryo")
                .password("1234")
                .address("china");
        return user;
    }

}
ChecksumBs 引导类

用来创建加签的相关配置及实现。

配置核心方法
方法 默认值 备注
newInstance() 新建 ChecksumBs 实例(static)
newInstance(object) 新建 ChecksumBs 实例,并且指定待加签的对象(static,建议使用)
target(Object) 指定待加签的对象
secret(ISecret) DefaultMd5Secret 指定加密的策略,默认使用 md5 加密
sort(ISort) NameAscSort 指定排序的策略,默认根据字段的名称正序排列表
cache(ICache) DefaultFieldListCache 指定字段的缓存策略,默认使用本地 map 进行字段信息缓存
调用核心方法
方法 返回值 备注
checksum() String 返回加签的结果
fill() 将上面 checksum 的结果设置到 @Checksum 标识的字段中
自定义

上述 ISecret/ISort/ICache 都是支持自定义的。

一般只需要重新定义 ISecret 即可。

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

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

相关文章

  • 基于 java 注解 csv 文件读写框架

    摘要:基于注解生成加签验签。是否写入头,建议第一次写入指定,避免中文乱码指定文件编码默认不进行字段排序无待写入的文件列表方法默认值说明必填创建实例,并且指定待读取文件路径。 csv 基于 java 注解生成加签验签 csv。 开源地址: github csv) 创作原由 以前觉得 csv 文件的多写非常简单,就懒得封装。 最近一个月写了两次 csv 文件相关的东西,发现要处理的细节还是有的,...

    Gemini 评论0 收藏0
  • 回眸曾经项目,与第三方支付相关,所带来沟通问题

    摘要:钱可以存储在自己的余额中,这就相当于微信钱包,余额可以提现到银行卡的中。我们的第三方支付平台是连连支付,杭州的一家公司。私钥怎么加签每个公司的加签方式是不一样的,支付宝有支付宝的加签方式,微信有微信的加签方式。 导读 笔者在校期间,通过自学java。学校里也开过这门课,但是,讲的都是一些基础,比如java的表达式、基本类型、自定义类型等等。也都是很基础的东西,就连lambda表达式都没...

    kaka 评论0 收藏0
  • python加密与解密,加签验签

    摘要:在与第三方服务对接时,加密与解密,加签与验签是这个过程中的关键一步一般情况下,对接服务中会有两对公私钥。传回来的数据,使用自己的私钥解密,使用对方的公钥验签。加密加密超长字节个字节一加密解密解密超长字符一解密加签验签签名待验证签名 在与第三方服务对接时,加密与解密,加签与验签是这个过程中的关键一步 一般情况下,对接服务中会有两对公私钥。使用对方公钥进行加密,使用自己私钥进行加签。传回来...

    daydream 评论0 收藏0
  • python (3.x) 实现RSA 加签 验签 以及key序列化

    摘要:首先安装确认安装的是版本版本的是不一样的生成公私钥对生成私钥同时包含公钥此处为序列化公钥私钥并写入文件存储序列化私钥无密码也可以加入密码保护私钥将私钥写入文件将公钥写入文件也可以采用其他序列化方法比如对公钥生成格式的序列化字符串输出类似于 首先 安装cryptography sudo pip3 install cryptography 确认安装的是2.1.x版本 (1.x版本的api是...

    kuangcaibao 评论0 收藏0
  • 数据防篡改加验签基本方案

    方案 加签 待加签数据整理为String (待加签数据+密钥)一起转化为MD5 结果写入数据库 验签 待验签数据整理为String(逻辑必须同加签一致) (待验签数据+密钥)一起转化为MD5 比较与原签是否一致 public static String sign(String text, String salt, String inputCharset) { return Dige...

    Michael_Ding 评论0 收藏0

发表评论

0条评论

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