Sitelet https://github.com/javaevolved/javaevolved.github.io/pull/195/files
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion content/security/key-derivation-functions.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ whyModernWins:
support:
state: "available"
description: "Finalized in JDK 25 LTS (JEP 510, Sept 2025)."
prev: "security/pem-encoding"
prev: "security/standard-base64"
next: "security/strong-random"
related:
- "security/pem-encoding"
Expand Down
2 changes: 1 addition & 1 deletion content/security/pem-encoding.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ support:
state: "preview"
description: "Preview in JDK 25 (JEP 470). Requires --enable-preview."
prev: "datetime/locale-of"
next: "security/key-derivation-functions"
next: "security/standard-base64"
related:
- "security/key-derivation-functions"
- "security/strong-random"
Expand Down
47 changes: 47 additions & 0 deletions content/security/standard-base64.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
id: bffeb48b-eda4-4cd1-966d-e401ba9e75a6
slug: "standard-base64"
title: "Standard Base64 encoding and decoding"
category: "security"
difficulty: "beginner"
jdkVersion: "8"
oldLabel: "Internal JDK API"
modernLabel: "Java 8+"
oldApproach: "sun.misc encoder"
modernApproach: "Standard Base64 API"
oldCode: |-
String encoded = new sun.misc.BASE64Encoder()
.encode(data);
modernCode: |-
String encoded = Base64.getEncoder()
.encodeToString(data);
summary: "Use java.util.Base64 instead of internal JDK classes or third-party codecs."
explanation: "The standard Base64 API provides basic, URL-safe, and MIME encoders and\
\ decoders without relying on unsupported internal packages. Use getEncoder() and\
\ getDecoder() for standard Base64, or select the URL and MIME variants when the\
\ target format requires them."
whyModernWins:
- icon: "🛡️"
title: "Supported API"
desc: "Avoids inaccessible sun.misc implementation classes."
- icon: "🧩"
title: "Complete variants"
desc: "Includes basic, URL-safe, and MIME encoders and decoders."
- icon: "🚀"
title: "No dependency"
desc: "Encoding and decoding are built into the JDK."
support:
state: "available"
description: "Widely available since JDK 8 (March 2014)."
prev: "security/pem-encoding"
next: "security/key-derivation-functions"
related:
- "security/pem-encoding"
- "datetime/hex-format"
- "strings/string-chars-stream"
tags:
- security
- serialization
docs:
- title: "Base64"
href: "https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Base64.html"
12 changes: 12 additions & 0 deletions proof/security/StandardBase64.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
///usr/bin/env jbang "$0" "$@" ; exit $?
//JAVA 25+
import java.util.Base64;

/// Proof: standard-base64
/// Source: content/security/standard-base64.yaml
void main() {
byte[] data = "Java evolved".getBytes();

String encoded = Base64.getEncoder()
.encodeToString(data);
}