C# 采用3DES-MAC进行签名 base64解码与编码

**

3DES-MAC

**

3DES-MAC(Triple Data Encryption Standard Message Authentication Code)是一种消息认证码(MAC)算法,用于验证消息的完整性和真实性。3DES-MAC使用了3DES(Triple Data Encryption Standard)加密算法的一部分来生成MAC值。以下是使用C#示例演示如何使用3DES-MAC签名一个消息:

首先,你需要确保在你的项目中引用了System.Security.Cryptography命名空间。

C# base64解码与编码

csharp 复制代码
using System;
using System.Security.Cryptography;
using System.Text;

class Program
{
    static void Main()
    {
        // 密钥和消息
        string key = "ThisIsASecretKey"; // 密钥长度必须是24字节(192位)
        string message = "Hello, World!";

        // 使用3DES-MAC签名消息
        string mac = Sign3DESMAC(key, message);
        Console.WriteLine("3DES-MAC 签名: " + mac);

        // 验证3DES-MAC签名
        bool isVerified = Verify3DESMAC(key, message, mac);
        if (isVerified)
        {
            Console.WriteLine("消息验证成功!");
        }
        else
        {
            Console.WriteLine("消息验证失败!");
        }
    }

    // 使用3DES-MAC签名消息
    static string Sign3DESMAC(string key, string message)
    {
        byte[] keyBytes = Encoding.UTF8.GetBytes(key);
        byte[] messageBytes = Encoding.UTF8.GetBytes(message);

        using (TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider())
        {
            des.Key = keyBytes;
            des.Mode = CipherMode.ECB; // 3DES-MAC通常使用ECB模式
            des.Padding = PaddingMode.PKCS7; // PKCS7填充

            using (HMACMD5 hmac = new HMACMD5(des.Key))
            {
                byte[] hashBytes = hmac.ComputeHash(messageBytes);
                return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
            }
        }
    }

    // 验证3DES-MAC签名
    static bool Verify3DESMAC(string key, string message, string macToVerify)
    {
        string calculatedMAC = Sign3DESMAC(key, message);
        return string.Equals(calculatedMAC, macToVerify, StringComparison.OrdinalIgnoreCase);
    }
}

在上述示例中,我们使用了3DES算法的一部分(通常是ECB模式)和HMAC-MD5散列算法来生成3DES-MAC签名。要记住,密钥的长度必须是24字节(192位),并且消息的签名可以使用Sign3DESMAC方法生成,并可以使用Verify3DESMAC方法验证。

请注意,3DES-MAC在实际应用中已经不太常见,因为现代加密标准更常用。如果安全性是关键问题,建议使用更强大的加密和签名算法,如HMAC-SHA256或更高级的算法。

base64解码与编码

csharp 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FT_Tools
{
    using System;
    using System.Text;

    class Base64
    {
        public static void MainTest()
        {
            // 要加密的原始字符串
            string originalText = "Hello, World!";

            // 加密成Base64字符串
            string base64EncodedText = EncodeBase64(originalText);
            Console.WriteLine("Base64 编码结果: " + base64EncodedText);

            // 解密Base64字符串
            string decodedText = DecodeBase64(base64EncodedText);
            Console.WriteLine("Base64 解码结果: " + decodedText);
        }

        // 使用Base64编码字符串
        public static string EncodeBase64(string text)
        {
            byte[] bytesToEncode = Encoding.UTF8.GetBytes(text);
            string encodedText = Convert.ToBase64String(bytesToEncode);
            return encodedText;
        }

        // 使用Base64解码字符串
        public static string DecodeBase64(string encodedText)
        {
            byte[] decodedBytes = Convert.FromBase64String(encodedText);
            string decodedText = Encoding.UTF8.GetString(decodedBytes);
            return decodedText;
        }
    }

}
相关推荐
Elastic 中国社区官方博客4 小时前
你的 AI agent 不需要你的 API 密钥:使用 OAuth 2.1 对 Elasticsearch MCP 服务器进行身份验证
大数据·运维·人工智能·elasticsearch·搜索引擎·全文检索
Albart57510 小时前
Docker Desktop最新版安装踩坑全记录(Windows_Mac_Linux)【2026 4.74.0 终版】
linux·windows·macos·docker·环境搭建·踩坑记录
互联网中的一颗神经元10 小时前
ZZ — Git 速查表
大数据·git·elasticsearch
Elasticsearch12 小时前
跳过有状态的 OTel Collector:Elasticsearch 9.5 原生存储两种指标时间类型
elasticsearch
淡海水13 小时前
01-05-运行时-JIT优化全景-内联去虚拟化边界检查消除
windows·c#·虚拟化·jit·内联·边界检查消除
C++、Java和Python的菜鸟21 小时前
第2章 项目前置课-代码版本控制Git
大数据·elasticsearch·搜索引擎
波波00721 小时前
C# 15 重磅新特性: 带标签 break 与 continue:重新定义嵌套循环控制流
服务器·前端·c#
wujian83111 天前
怎么用千问生成word文档:从「格式崩」到「一键过」,AI导出鸭打通最后半厘米
人工智能·ai·c#·word·豆包·deepseek·ai导出鸭
zlinear数据采集卡1 天前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#