详解commons-codec maven插件

发布时间:2023-05-20

一、概述

Apache Commons Codec是在基于Java的开放源代码的编解码库。它提供了多个常见编解码方法和 Hashing 的实现,包括 Base64MD5、SHA-1、SHA-256等加密算法,以及其他编码格式。 commons-codec-maven是一个使用Apache Commons Codec构建编解码控制台应用程序的Maven插件。在Maven项目中使用此插件可以更加轻松地创建和运行Java编解码程序。

二、安装

1、Maven支持官方开箱即用的<maven-plugins>元素; 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等多种常见编解码方法和哈希的实现。