C# 语言中的 Base64 编码和解码

作者:微信公众号:【架构师老卢】
9-1 20:4
10

概述:了解 C# 中的 Base64 编码和解码:面向开发人员的综合指南Base64 编码是用于将二进制数据转换为文本格式的常用技术。这对于通过旨在处理文本的媒体 (如 JSON 或 XML) 传输数据特别有用。在本文中,我们将深入探讨 C# 中的 Base64 编码和解码,探索实际应用、优势以及如何有效实现它。什么是 Base64 编码?Base64 编码获取二进制数据并将其转换为一串 ASCII 字符。此编码方案使用 64 个不同的 ASCII 字符(A-Z、a-z、0-9、+ 和 /)来表示二进制数据。生成的编码数据通常比原始二进制数据大 33% 左右。为什么使用 Base64 编码?**文本

了解 C# 中的 Base64 编码和解码:面向开发人员的综合指南

Base64 编码是用于将二进制数据转换为文本格式的常用技术。这对于通过旨在处理文本的媒体 (如 JSON 或 XML) 传输数据特别有用。在本文中,我们将深入探讨 C# 中的 Base64 编码和解码,探索实际应用、优势以及如何有效实现它。

什么是 Base64 编码?

Base64 编码获取二进制数据并将其转换为一串 ASCII 字符。此编码方案使用 64 个不同的 ASCII 字符(A-Z、a-z、0-9、+ 和 /)来表示二进制数据。生成的编码数据通常比原始二进制数据大 33% 左右。

为什么使用 Base64 编码?

  • **文本表示:**Base64 允许将二进制数据表示为文本,从而更容易以基于文本的格式(如 XML、JSON 或 URL)包含二进制数据。
    - 数据完整性: 它确保数据在传输过程中保持不变,不被修改。
    - 兼容性: Base64 广泛用于各种协议,例如用于电子邮件的 MIME、用于 API 的 JSON 等。

C 语言编码和解码#

将二进制数据编码为 Base64

在 C# 中,“Convert”类提供了一种使用“ToBase64String”方法将二进制数据编码为 Base64 字符串的简单方法。

byte[] binaryData = System.Text.Encoding.UTF8.GetBytes("Hello, World!");  
string base64EncodedData = Convert.ToBase64String(binaryData);  
  
Console.WriteLine("Encoded: " + base64EncodedData);

在此示例中,我们使用 UTF-8 编码将简单的 “Hello, World!” 字符串转换为字节数组,然后将其编码为 Base64 字符串。

将 Base64 解码为二进制数据

使用 'Convert' 类的 'FromBase64String' 方法进行解码同样简单。

string base64EncodedData = "SGVsbG8sIFdvcmxkIQ==";  
byte[] binaryData = Convert.FromBase64String(base64EncodedData);  
string decodedString = System.Text.Encoding.UTF8.GetString(binaryData);  
  
Console.WriteLine("Decoded: " + decodedString);

在这里,我们采用 Base64 编码的字符串,将其解码回二进制数据,然后使用 UTF-8 编码将该二进制数据转换回可读字符串。

实际应用

1. 以 JSON 格式存储二进制数据

Base64 编码对于以 JSON 格式存储二进制数据特别有用。例如,如果您需要通过基于 JSON 的 API 发送图像或文件,则可以将文件的二进制数据编码为 Base64 并将其包含在 JSON 有效负载中。

using Newtonsoft.Json;  
  
byte[] fileData = System.IO.File.ReadAllBytes("path/to/your/image.jpg");  
string base64Content = Convert.ToBase64String(fileData);  
var file = new FileData  
{  
    FileName = "image.jpg",  
    Base64Content = base64Content  
};  
string json = JsonConvert.SerializeObject(file);  
  
Console.WriteLine(json);  
  
public class FileData  
{  
    public string FileName { get; set; }  
    public string Base64Content { get; set; }  
}

2. 在 URL 中包含二进制数据

Base64 编码可用于在 URL 中安全地包含二进制数据。但是,由于“+”和“/”字符可能会导致 URL 出现问题,因此您可能需要使用 URL 安全的 Base64 编码变体。

byte[] binaryData = System.Text.Encoding.UTF8.GetBytes("Hello, World!");  
string base64EncodedData = Convert.ToBase64String(binaryData);  
string urlSafeBase64EncodedData = base64EncodedData.Replace('+', '-').Replace('/', '_').Replace("=", "");  
  
Console.WriteLine("URL Safe Encoded: " + urlSafeBase64EncodedData);

3. 数据完整性验证

Base64 编码还用于需要验证数据完整性的哈希和数字签名。

using System.Security.Cryptography;  
using System.Text;  
  
string originalData = "Hello, World!";  
byte[] originalDataBytes = Encoding.UTF8.GetBytes(originalData);  
using var sha256 = SHA256.Create();  
  
byte[] hashBytes = sha256.ComputeHash(originalDataBytes);  
string base64Hash = Convert.ToBase64String(hashBytes);  
  
Console.WriteLine("SHA-256 Hash in Base64: " + base64Hash);

Base64 编码和解码是 C# 编程的基本技能,能够有效地处理和传输文本格式的二进制数据。无论您是以 JSON 格式存储二进制数据、将其嵌入 URL 中,还是确保数据完整性,Base64 都能提供可靠且易于使用的解决方案。C# 中的“Convert”类使编码和解码成为一项简单的任务,使开发人员能够轻松处理二进制数据。

通过了解和实施 Base64 编码和解码,您可以增强应用程序的数据处理能力,确保跨各种平台和协议的兼容性、完整性和易传输性。

阅读排行