一、概述
Apache Commons Codec是在基于Java的开放源代码的编解码库。它提供了多个常见编解码方法和 Hashing 的实现,包括Base64,MD5,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等多种常见编解码方法和哈希的实现。