Skip to content

ZhengshengWei/DigitalSignatureAlgorithmUtils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

插件功能: 验证数字签名【工具类】

支持的签名算法:MD5,RSA,DSA,ECDSA

目前工程拥有两种使用方法,分别为算法类静态调用、工厂多态调用,任选其一便可(推荐使用第一种),下面分别介绍。

一、算法类静态调用

1.在工程pom文件中添加如下代码:

<groupId>com.weibo.datasys</groupId>
<artifactId>dsa-utils</artifactId>
<version>1.0-SNAPSHOT</version>

2.选择签名算法类

类名分别为:MD5、RSA、DSA、ECDSA

3.调用接口:

/**
 * 生成数字签名
 * @param messages 源消息
 * @param key      密钥
 * @return 签名
 */
public boolean verify(String h, List<String> messages, String publicKey);//验证签名

/**
 * 生成数字签名
 * @param messages 源消息
 * @param key      密钥
 * @return 签名
 */
public static String generateSignature(List<String> messages, String key);//生成签名

二、工厂多态调用

1.在工程pom文件中添加如下代码:

<groupId>com.weibo.datasys</groupId>
<artifactId>dsa-utils-factory</artifactId>
<version>1.0-SNAPSHOT</version>

2.使用DSAFactory的getInstance方法获取相应的签名算法

DSAFactory.getInstance(DSASet.MD5);//其中DSASet为算法枚举集合,取值为MD5,RSA,DSA,ECDSA,对应相应的算法

算法通用接口如下:

    /**
     * 生成数字签名
     * @param messages 源消息
     * @param key      密钥
     * @return 签名
     */
    public boolean verify(String h, List<String> messages, String publicKey);//验证签名
    
    /**
     * 生成数字签名
     * @param messages 源消息
     * @param key      密钥
     * @return 签名
     */
    public static String generateSignature(List<String> messages, String key);//生成签名
  
        
使用示例如下:

    //verify
    boolean valid = DSAFactory.getInstance(DSASet.ECDSA).verify(sign, new ArrayList<String>(){
            {
                add(message);
            }
        }, publicKey, true);

说明:

工具中RSA,DSA,ECDSA算法使用前提需要有对应算法的公钥、私钥,可以使用其他工具生成,或者使用本插件自带,生成示例如下:

List<String> pairList = DSA.generatePrivateAndPublicKey();
List<String> pairList = RSA.generatePrivateAndPublicKey();
List<String> pairList = ECDSA.generatePrivateAndPublicKey();

返回列表中包含两个值,其中0位是私钥,1位是公钥。公钥、私钥全部采用BASE64编码。

About

Digital Signature

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages