-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCodecSample.java
More file actions
126 lines (108 loc) · 3.59 KB
/
CodecSample.java
File metadata and controls
126 lines (108 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package internal.samples;
import space.sunqian.fs.utils.codec.Base64Kit;
import space.sunqian.fs.utils.codec.DigestKit;
import space.sunqian.fs.utils.codec.HexKit;
import java.security.MessageDigest;
/**
* Sample: Codec Utilities Usage
* <p>
* Purpose: Demonstrate how to use the codec utilities provided by fs-core module.
* <p>
* Use Cases:
* <ul>
* <li>
* Base64 encoding and decoding
* </li>
* <li>
* Hex encoding and decoding
* </li>
* <li>
* Message digest operations
* </li>
* </ul>
* <p>
* Key Classes:
* <ul>
* <li>
* {@link Base64Kit}: Base64 encoding and decoding utilities
* </li>
* <li>
* {@link HexKit}: Hex encoding and decoding utilities
* </li>
* <li>
* {@link DigestKit}: Message digest utilities
* </li>
* </ul>
*/
public class CodecSample {
public static void main(String[] args) {
demonstrateBase64Operations();
demonstrateHexOperations();
demonstrateDigestOperations();
}
/**
* Demonstrates Base64 encoding and decoding.
*/
public static void demonstrateBase64Operations() {
System.out.println("=== Base64 Operations ===");
String original = "Hello, Base64!";
System.out.println("Original: " + original);
// Encode to Base64
String encoded = Base64Kit.encoder().encodeToString(original.getBytes());
System.out.println("Encoded: " + encoded);
// Decode from Base64
byte[] decodedBytes = Base64Kit.decoder().decode(encoded);
String decoded = new String(decodedBytes);
System.out.println("Decoded: " + decoded);
}
/**
* Demonstrates Hex encoding and decoding.
*/
public static void demonstrateHexOperations() {
System.out.println("\n=== Hex Operations ===");
String original = "Hello, Hex!";
System.out.println("Original: " + original);
// Encode to Hex
String encoded = HexKit.encoder().encodeToString(original.getBytes());
System.out.println("Encoded: " + encoded);
// Decode from Hex
byte[] decodedBytes = HexKit.decoder().decode(encoded);
String decoded = new String(decodedBytes);
System.out.println("Decoded: " + decoded);
}
/**
* Demonstrates message digest operations.
*/
public static void demonstrateDigestOperations() {
System.out.println("\n=== Digest Operations ===");
String original = "Hello, Digest!";
System.out.println("Original: " + original);
try {
// MD5 digest
String md5 = calculateDigest(original, "MD5");
System.out.println("MD5: " + md5);
// SHA-1 digest
String sha1 = calculateDigest(original, "SHA-1");
System.out.println("SHA-1: " + sha1);
// SHA-256 digest
String sha256 = calculateDigest(original, "SHA-256");
System.out.println("SHA-256: " + sha256);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Calculates the digest for the given input using the specified algorithm.
*/
private static String calculateDigest(String input, String algorithm) throws Exception {
MessageDigest digest = MessageDigest.getInstance(algorithm);
byte[] hash = digest.digest(input.getBytes());
StringBuilder hexString = new StringBuilder();
for (byte b : hash) {
String hex = Integer.toHexString(0xff & b);
if (hex.length() == 1) hexString.append('0');
hexString.append(hex);
}
return hexString.toString();
}
}