摘要:基于注解生成加簽驗簽。后來發(fā)現(xiàn)如下的問題有些字段太大,不想?yún)⑴c驗簽,但是無法方便的調(diào)整。感覺這樣有很大的弊端,完全失去了靈活性。
checksum
基于 java 注解生成加簽驗簽 checksum。
開源地址:github checksum創(chuàng)作緣由
原來的代碼中,checksum 的生成是用的工具類方法。
后來發(fā)現(xiàn)如下的問題:
有些字段太大,不想?yún)⑴c驗簽,但是無法方便的調(diào)整。
不同系統(tǒng)的 checksum 字段不同,只好把工具方法 copy 過去,改來改去。
感覺這樣有很大的弊端,完全失去了靈活性。
特性基于注解的 checksum 加簽驗簽
Fluent 流式語法
支持靈活的策略自定義
更新記錄更新記錄快速開始 環(huán)境要求
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 表示加簽結(jié)果存放的字段
調(diào)用測試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()); } /** * 構(gòu)建示例對象 * @return 構(gòu)建示例對象 */ private User buildUser() { User user = new User(); user.name("ryo") .password("1234") .address("china"); return user; } }ChecksumBs 引導(dǎo)類
用來創(chuàng)建加簽的相關(guān)配置及實現(xiàn)。
配置核心方法方法 | 默認值 | 備注 |
---|---|---|
newInstance() | 新建 ChecksumBs 實例(static) | |
newInstance(object) | 新建 ChecksumBs 實例,并且指定待加簽的對象(static,建議使用) | |
target(Object) | 指定待加簽的對象 | |
secret(ISecret) | DefaultMd5Secret | 指定加密的策略,默認使用 md5 加密 |
sort(ISort) | NameAscSort | 指定排序的策略,默認根據(jù)字段的名稱正序排列表 |
cache(ICache) | DefaultFieldListCache | 指定字段的緩存策略,默認使用本地 map 進行字段信息緩存 |
方法 | 返回值 | 備注 |
---|---|---|
checksum() | String | 返回加簽的結(jié)果 |
fill() | 無 | 將上面 checksum 的結(jié)果設(shè)置到 @Checksum 標識的字段中 |
上述 ISecret/ISort/ICache 都是支持自定義的。
一般只需要重新定義 ISecret 即可。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/74689.html
摘要:基于注解生成加簽驗簽。是否寫入頭,建議第一次寫入指定,避免中文亂碼指定文件編碼默認不進行字段排序無待寫入的文件列表方法默認值說明必填創(chuàng)建實例,并且指定待讀取文件路徑。 csv 基于 java 注解生成加簽驗簽 csv。 開源地址: github csv) 創(chuàng)作原由 以前覺得 csv 文件的多寫非常簡單,就懶得封裝。 最近一個月寫了兩次 csv 文件相關(guān)的東西,發(fā)現(xiàn)要處理的細節(jié)還是有的,...
摘要:錢可以存儲在自己的余額中,這就相當于微信錢包,余額可以提現(xiàn)到銀行卡的中。我們的第三方支付平臺是連連支付,杭州的一家公司。私鑰怎么加簽每個公司的加簽方式是不一樣的,支付寶有支付寶的加簽方式,微信有微信的加簽方式。 導(dǎo)讀 筆者在校期間,通過自學java。學校里也開過這門課,但是,講的都是一些基礎(chǔ),比如java的表達式、基本類型、自定義類型等等。也都是很基礎(chǔ)的東西,就連lambda表達式都沒...
摘要:在與第三方服務(wù)對接時,加密與解密,加簽與驗簽是這個過程中的關(guān)鍵一步一般情況下,對接服務(wù)中會有兩對公私鑰。傳回來的數(shù)據(jù),使用自己的私鑰解密,使用對方的公鑰驗簽。加密加密超長字節(jié)個字節(jié)一加密解密解密超長字符一解密加簽驗簽簽名待驗證簽名 在與第三方服務(wù)對接時,加密與解密,加簽與驗簽是這個過程中的關(guān)鍵一步 一般情況下,對接服務(wù)中會有兩對公私鑰。使用對方公鑰進行加密,使用自己私鑰進行加簽。傳回來...
摘要:首先安裝確認安裝的是版本版本的是不一樣的生成公私鑰對生成私鑰同時包含公鑰此處為序列化公鑰私鑰并寫入文件存儲序列化私鑰無密碼也可以加入密碼保護私鑰將私鑰寫入文件將公鑰寫入文件也可以采用其他序列化方法比如對公鑰生成格式的序列化字符串輸出類似于 首先 安裝cryptography sudo pip3 install cryptography 確認安裝的是2.1.x版本 (1.x版本的api是...
方案 加簽 待加簽數(shù)據(jù)整理為String (待加簽數(shù)據(jù)+密鑰)一起轉(zhuǎn)化為MD5 結(jié)果寫入數(shù)據(jù)庫 驗簽 待驗簽數(shù)據(jù)整理為String(邏輯必須同加簽一致) (待驗簽數(shù)據(jù)+密鑰)一起轉(zhuǎn)化為MD5 比較與原簽是否一致 public static String sign(String text, String salt, String inputCharset) { return Dige...
閱讀 3142·2021-10-08 10:04
閱讀 1080·2021-09-30 09:48
閱讀 3449·2021-09-22 10:53
閱讀 1664·2021-09-10 11:22
閱讀 1682·2021-09-06 15:00
閱讀 2142·2019-08-30 15:56
閱讀 704·2019-08-30 15:53
閱讀 2273·2019-08-30 13:04