• 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解码与编码

    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);
        }
    }
    
    • 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

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

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

    base64解码与编码

    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;
            }
        }
    
    }
    
    
    • 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
  • 相关阅读:
    Pyg消息传递源码(MESSAGE PASSING)+实例
    手工测试转自动化测试后,薪资可以达到多少?
    MATLAB算法实战应用案例精讲-【优化算法】冠状病毒优化算法(COVIDOA)(附MATLAB代码实现)
    全网最全谷粒商城记录_07、环境-虚拟机网络设置
    07-ConfigurationClassPostProces的解析
    深度解剖数据在队列的应用
    8月25日计算机视觉理论学习笔记——R-FCN、YOLO
    天猫超市电商营销系统:无代码开发实现API连接集成
    java操作数据库的利器 DBCUtils
    25.CSS自定义形状按钮与悬停效果
  • 原文地址:https://blog.csdn.net/chenhao0568/article/details/132665386