您的位置:

详解commons-codec maven插件

一、概述

Apache Commons Codec是在基于Java的开放源代码的编解码库。它提供了多个常见编解码方法和 Hashing 的实现,包括Base64MD5,SHA-1,SHA-256等加密算法,以及其他编码格式。

commons-codec-maven是一个使用Apache Commons Codec构建编解码控制台应用程序的Maven插件。在Maven项目中使用此插件可以更加轻松地创建和运行Java编解码程序。

二、安装

1、Maven支持官方开箱即用的 元素;

2、在pom.xml中添加如下代码即可:

  
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.1.1</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.1.2</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.2.1</version>
        <configuration>
          <minimizeJar>true</minimizeJar>
          <outputFile>${outputDirectory}/${project.artifactId}-${project.version}-all.jar</outputFile>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.3.0</version>
        <executions>
          <execution>
            <id>make-assembly</id>
            <goals>
              <goal>single</goal>
            </goals>
            <phase>package</phase>
            <configuration>
              <archive>
                <manifest>
                  <mainClass>${mainClass}</mainClass>
                </manifest>
              </archive>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.2.0</version>
        <executions>
          <execution>
            <id>attach-javadoc</id>
            <goals>
              <goal>javadoc</goal>
            </goals>
            <configuration>
              <doclint>none</doclint>
              <failOnWarnings>false</failOnWarnings>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>3.0.0</version>
          <configuration>
              <mainClass>${mainClass}</mainClass>
          </configuration>
      </plugin>
    </plugins>
  </build>
  

三、使用

1、Base64编解码

Base64是一种将二进制数据转化为文本格式的编码方式,通常用于数据传输。

Base64编码:将源数据逐字节与 (11111100) 二进制进行与操作,再将得到的结果每 6 位分为 1 组,然后从高位开始依次映射成3个可打印 ASCII 字符。如果刚好遇到源数据末尾时不足四字节的情况,则用 = 补足充足。

Base64解码:将 Base64 编码后的字符串的每个字符按照从低位到高位的顺序映射成6位二进制数,并拼凑成3个字节的形式进行解码。如果解码数据的结尾出现了 =,则代表解码数据的结尾缺少了 byte 类型需要补上。

Base64编解码代码示例:

  
  public class Base64Demo {
    public static void main(String[] args) {
        String input = "hello world";
        byte[] inputBytes = input.getBytes(StandardCharsets.UTF_8);

        // Encode
        String encodedString = Base64.encodeBase64String(inputBytes);
        System.out.println(encodedString); // aGVsbG8gd29ybGQ=

        // Decode
        byte[] decodedBytes = Base64.decodeBase64(encodedString);
        String decodedString = new String(decodedBytes, StandardCharsets.UTF_8);
        System.out.println(decodedString); // hello world
    }
  }
  

2、MD5加密

MD5(Message-Digest Algorithm 5),是一种对任意长度的消息进行不可逆变换的算法,通常用于加密密码等数据。

MD5算法实现过程:

1. 字符串统一转成byte数组

2. 给byte数组补码

3. 将补码转化成十六进制形式

MD5加密代码示例:

  
  public class Md5Demo {
    public static void main(String[] args) {
        String input = "hello world";
        String md5Hex = DigestUtils.md5Hex(input);
        System.out.println(md5Hex); // 5eb63bbbe01eeed093cb22bb8f5acdc3
    }
  }
  

3、SHA-1加密

SHA-1(Secure Hash Algorithm)是一组加密算法的名称。该算法被广泛用于数据完整性校验,数据加密等领域。

SHA-1加密代码示例:

  
  public class Sha1Demo {
    public static void main(String[] args) {
        String input = "hello world";
        String sha1Hex = DigestUtils.sha1Hex(input);
        System.out.println(sha1Hex); // 2ef7bde608ce5404e97d5f042f95f89f1c232871
    }
  }
  

四、总结

通过本文的介绍,我们可以看到,通过使用commons-codec-maven插件,我们可以轻松地构建和运行Java编解码程序,并且可以使用Base64、MD5、SHA-1等多种常见编解码方法和哈希的实现。