一、概述
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等多種常見編解碼方法和哈希的實現。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/297645.html