[API Proposal]: String-to-String Base64 Encode/Decode
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Start by reviewing the proposed APIs for System.Convert, System.Buffers.Text.Base64, and Base64Url, along with the existing Base64 APIs they extend. The issue does not name files or tests; the first step is to determine whether the proposed signatures and behavior fit the project’s API conventions. Done means the proposal has a clear design decision, including the Encoding parameters.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Background and Motivation
Today, .NET's Base64 APIs have a gap: there is no direct way to encode a string to a Base64 string, or decode a Base64 string back to a string. Every existing method either accepts byte[] / ReadOnlySpan<byte> as input (encode side) or returns byte[] (decode side).
This pattern is extremely common across the .NET ecosystem. It appears in CI/CD tooling, configuration loaders, certificate handling, token encoding, and countless other packages. In many cases the Base64-encoded values are stored as strings in configuration files, databases, or API responses and need to be decoded back to strings when consumed later.
var certPem = Encoding.UTF8.GetString(Convert.FromBase64String(configuration.ClientCertificateData));
var releaseBuildBase64 = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(releaseBuild));
This is verbose, does not have easy discoverability and allocates an intermediate byte[] that could be avoided internally.
Proposed API
All methods accept ReadOnlySpan<char> rather than string — callers can pass a string directly thanks to the implicit conversion.
namespace System;
public static partial class Convert
{
public static string ToBase64String(ReadOnlySpan<char> source, Encoding encoding);
public static string ToBase64String(ReadOnlySpan<char> source, Encoding encoding, Base64FormattingOptions options);
}
namespace System.Buffers.Text;
public static partial class Base64
{
public static string EncodeToString(ReadOnlySpan<char> source, Encoding encoding);
public static string DecodeToString(ReadOnlySpan<char> source, Encoding encoding);
}
public static partial class Base64Url
{
public static string EncodeToString(ReadOnlySpan<char> source, Encoding encoding);
public static string DecodeToString(ReadOnlySpan<char> source, Encoding encoding);
}
API Usage
// Encode a connection string for safe storage in a config file
string encoded = Convert.ToBase64String("Server=prod;Database=App;User=admin;", Encoding.UTF8);
// Decode it back when reading the config
string connectionString = Convert.FromBase64ToString(encoded, Encoding.UTF8);
Edit: Added Encoding parameters
- Lingua principale
- C#
- Stelle
- 18.4k
- Fork
- 5.8k
- Merge medio
- 2g 13h
- PR unite (30g)
- 588
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di dotnet/runtime
-
area-System.IO untriaged
Difficoltà 2/5 Mezza giornata Idoneità per principianti 72/100
dotnet/runtime#136802 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[wasi] .NET 10: WasmEnableSIMD with AOT fails because WasiApp.targets has -msimd128 commented outApertaarea-Build-mono untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
area-System.ComponentModel untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
dotnet/runtime#136608 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
MemoryMappedFile (Windows): failed MEM_COMMIT is ignored, accessor over reserved memory crashes the processForse già presa @RutulPatel8 l’ha presa 1 giorno fa. Apertaarea-System.IO bug untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
dotnet/runtime#136599 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area-System.IO untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
dotnet/runtime#136577 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di dotnet/runtime
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
RadicalCSG/com.chisel#192 ·
I maintainer di solito rispondono entro 1 giorno
-
area-testing p2-post-1.0 technical-debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
RazorConsole/RazorConsole#447 ·
I maintainer di solito rispondono entro 1 giorno
-
bug P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Add a Godot splashApertagodot good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 2 giorni