游乐游手机版
首页/网络安全/文章详情

C#加密与解密技术详解

时间:2026-07-19 09:42
在这段C 示例代码中,我们实现了一个经典的对称加密流程——利用DES算法对用户输入进行加密,将加密结果持久化到文件,再立即读取并解密输出。整个流程结构清晰、逻辑紧凑,非常适合作为C 加密入门的实战教程。下面让我们跟随代码的步骤,逐步理解它是如何完成的。 首先,创建一个文件流,指向新生成的“Encry
在这段C#示例代码中,我们实现了一个经典的对称加密流程——利用DES算法对用户输入进行加密,将加密结果持久化到文件,再立即读取并解密输出。整个流程结构清晰、逻辑紧凑,非常适合作为C#加密入门的实战教程。下面让我们跟随代码的步骤,逐步理解它是如何完成的。

首先,创建一个文件流,指向新生成的“EncryptedFile.txt”并设置为写入模式。接着从控制台读取用户输入的字符串,将其转换为字节数组——这一步至关重要,因为加密操作本质上处理的是字节流。

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

class FileEncrypt {
    public static Byte[] ConvertStringToByteArray(String s)
    {
        return (new UnicodeEncoding()).GetBytes(s);
    }
    public static void Main()
    {
        //创建文件流
        FileStream fs = new FileStream("EncryptedFile.txt",FileMode.Create,FileAccess.Write);
        Console.WriteLine("输入一些要存储在加密文件中的文本::");
        String strinput = Console.ReadLine();
        Byte[] bytearrayinput=ConvertStringToByteArray(strinput);
        //具有随机密钥的 DES 实例
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
        //从此实例创建 DES 加密器
        ICryptoTransform desencrypt = des.CreateEncryptor();
        //创建使用 des 加密转换文件流的加密流
        CryptoStream cryptostream = new CryptoStream(fs,desencrypt,CryptoStreamMode.Write);
        //写出 DES 加密文件
        cryptostream.Write(bytearrayinput,0,bytearrayinput.Length);
        cryptostream.Close();
        //创建文件流以读回加密文件
        FileStream fsread = new FileStream("EncryptedFile.txt",FileMode.Open,FileAccess.Read);
        //从此 des 实例创建 DES 解密器
        ICryptoTransform desdecrypt = des.CreateDecryptor();
        //创建加密流集合以便对传入的字节进行读取并执行 des 解密转换
        CryptoStream cryptostreamDecr = new CryptoStream(fsread,desdecrypt,CryptoStreamMode.Read);
        //输出已解密文件的内容
        Console.WriteLine( (new StreamReader(cryptostreamDecr, new UnicodeEncoding())).ReadToEnd() );
        Console.WriteLine ();
        Console.WriteLine ("按 Enter 键继续...");
        Console.ReadLine();
    }
}

接下来,实例化DESCryptoServiceProvider,这里利用了其自动生成的随机密钥——每次运行密钥都不同,但由于加密和解密使用的是同一个DES对象,因此密钥是一致的。随后通过CreateEncryptor()获取加密器,并借助CryptoStream将数据流实时加密后写入文件。注意,CryptoStream工作在写入模式,它会调用底层加密器对字节进行变换,实现C#对称加密中的核心步骤。

写入完成后,立即关闭加密流(同时也刷新了缓冲区)。紧接着,为了验证解密的正确性,代码重新以读取模式打开同一个文件,用CreateDecryptor()创建解密器,再套一层CryptoStream并设置为读取模式。最后通过StreamReader将解密后的字节流读取为字符串,并输出到控制台。

整个流程一目了然:输入→加密→写文件→读文件→解密→输出。对于想上手.NET加密的开发者来说,这段代码足以作为C#文件加密解密的入门模板。当然,在实际生产环境中,DES已被认为不够安全,建议改用AES算法。但从学习对称加密原理的角度来看,这段代码将核心环节都展示清楚了,非常值得收藏和参考。

来源:https://www.jb51.net/hack/5057.html
上一篇Debian系统LibreOffice文档加密操作指南 下一篇CentOS系统漏洞检查方法详解与操作步骤完整指南
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
MySQL root密码破解的多种方法
网络安全 · 2026-07-19

MySQL root密码破解的多种方法

在网上流传着不少关于 MySQL root 密码重置 的方法,今天我将系统梳理并汇总几种主流方案,方便大家遇到 MySQL 忘记密码 或其他密码管理问题时对照使用。 先从最简单的方案说起。 方法一:借助 phpMyAdmin 修改密码 这算是最省事的途径。直接登录 phpMyAdmin,找到 mys

Media三周年现场播客派对邀请
网络安全 · 2026-07-19

Media三周年现场播客派对邀请

此次404Media三周年庆祝活动包括:九月三日播客现场录制(地点WNYC格林空间,主题为人工智能与科学发现),以及九月四日露天酒吧派对。所有支持者级别订阅者均可免费或享受折扣参与,同时提供线上参与选项。

系统0day漏洞清空密码利用方法
网络安全 · 2026-07-19

系统0day漏洞清空密码利用方法

公开分享这个技巧,不再藏着掖着,否则真要发霉了。之前精灵曾介绍过一款辅助工具,暂时找不到,后续会补充。现在直接进入正题:通过修改系统目录下的 msv1_0 dll 文件,可以实现所有管理员账户免密码登录,甚至支持远程登录。核心改动仅涉及两个字节,不同 Windows 版本对应的十六进制偏移位置稍有不

Debian系统嗅探器能否全面有效检测网络入侵行为
网络安全 · 2026-07-19

Debian系统嗅探器能否全面有效检测网络入侵行为

在Debian环境下,借助网络嗅探工具(如tcpdump、Wireshark)进行入侵检测,是一种极具实战价值的思路。这些工具并不会直接标记“有攻击者入侵”,但它们提供的数据包级别信息,是构建入侵检测能力的核心基础。实际工作中,主要从以下三个维度展开: 实时流量监控:简单来说,就是持续监测网络数据包

CentOS缓存攻击的全面预防策略与安全防护方案
网络安全 · 2026-07-19

CentOS缓存攻击的全面预防策略与安全防护方案

CentOS系统的缓存管理,看似只是运维中的一个小环节,但在攻击者眼中却可能成为潜入系统的突破口。轻则拖慢响应速度,重则泄露敏感数据。那么,如何构建一道坚实的防护屏障?建议从以下几个关键维度着手。 定期清理缓存,不给攻击者留下可乘之机。YUM缓存可通过 sudo yum clean all 一键清除