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