C#集成数据加密算法,包含DES、RSA、Base64、SHA、MD5算法,轻松实现数据加密解密需求

C#集成数据加密算法,包含DES、RSA、Base64、SHA、MD5算法

在需要使用配置文件的工控软件中,往往需要在配置文件和数据库中对一些数据加密,即对一串数据进行加密算法后输出复杂符号和字符的形式,让非相关人员无法识别原有数据,从而对数据或数据库进行相应的保护,这往往也是公司安全部门的基本要求。
网上写加密算法的文章很多,本人由于要在多项目中使用加密算法,本着怎么方便怎么来的原则,将网上的主流算法整理了一下,做成了dll类库,只要在新项目中加载类库,就能轻松的加密和解密数据,不用每次再去查找复制代码了,某种意义上也算一劳永逸了。
dll中包括了对称加密算法DES,非对称加密算法RSA,不可逆算法SHA、MD5,以及不能称为算法的Base64(因为不需要密匙,加密和解密简单,使用场合还是很多的),种类基本还是比较全的。至于几种算法的含义和具体原理,这里就不多说了,感兴趣的小伙伴可以上网搜下,这里只介绍使用案例,毕竟应用才是大部分小伙伴的迫切需求(毕竟时间有限,项目的紧迫让人很难追根究底,功能实现才是王道是不现实如此,勿喷~~~)。

一、项目创建

项目以winform为例,创建一个Winfrom项目,命名为EncryptionDemo,在依赖库中导入类库Encryption,Encryption类库的下载链接在文底。![在这里插入图片描述](https://img-
blog.csdnimg.cn/d1bc52f828c4481182332537a14c1856.png)
在界面上简单画几个控件,做测试用,如下图:
简单界面

二、DES加密算法

DES,全称Data Encryption Standard,是一种对称加密算法,安全性比较高。
在加密DES_Encrypt和解密DES_Decrypt按钮下,分别简单的引用类库中的DES加密和解密方法。

      private void DES_Encrypt_button_Click(object sender, EventArgs e)
        {
            try
            {
                textBox6.Text = EncryptionManager.DESEncrypt(textBox3.Text, textBox1.Text, textBox2.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void DES_Decrypt_button_Click(object sender, EventArgs e)
        {
            try
            {
                textBox6.Text = EncryptionManager.DESDecrypt(textBox6.Text, textBox4.Text, textBox5.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

随后在界面上输入密匙、向量以及要加密的数据,点击DES_Encrypt按钮,在解密数据框中会得到加密后数据,如图。
在这里插入图片描述
要解密的话只需要输入相同的密匙和向量,即会对解密数据框中的数据进行解密输出,如下图。
在这里插入图片描述

二、RSA加密算法

按顺序下面是RSA算法,RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,多用于数据加密和数字签名。
同样的在加密RSA_Encrypt和解密RSA_Decrypt按钮下,引用Encryption类库中的RSA加密和解密方法。

      private void RSA_Encrypt_button_Click(object sender, EventArgs e)
        {
            try
            {
                textBox10.Text = EncryptionManager.RSAEncryption(textBox9.Text,textBox7.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void RSA_Decrypt_button_Click(object sender, EventArgs e)
        {
            try
            {
                textBox10.Text = EncryptionManager.RSADecrypt(textBox10.Text, textBox8.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

随后在界面上输入密匙容器的名字和需要加密的数据,点击RSA_Encrypt按钮,在解密数据框中会得到加密后数据,如图。
在这里插入图片描述
同样需要解密的话,只需要输入相同的密匙容器,点击RSA_Decrypt按钮,就会对解密数据框中的数据进行解密,如图。

在这里插入图片描述

三、Base64加密算法

Base64从本质来说,其实并不是加密算法,只是一种编码方式而已,Base64的"加解密"也不叫加密解密,而是编码解码,但是现在一般都把它归为加密算法。而且对安全级别不是要求很高的情况下,用它往往会比较合适,其实还是加解密方便,方便使用。
同样的在加密Base64_Encrypt和解密Base64_Decrypt按钮下,引用Encryption类库中的Base64加密和解密方法。

        private void Base64_Encrypt_button_Click(object sender, EventArgs e)
        {
            try
            {
                textBox12.Text = EncryptionManager.Base64Encrypt(textBox11.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void Base64_Decrypt_button_Click(object sender, EventArgs e)
        {
            try
            {
                textBox12.Text = EncryptionManager.Base64Decrypt(textBox12.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

随后在界面上只要输入加密的数据就可以了,点击Base64_Encrypt按钮,在解密数据框中会得到加密后数据,如图。
在这里插入图片描述
需要解密的话,直接点击Base64_Decrypt按钮就行,就会对解密数据框中的数据进行解密,如图。
在这里插入图片描述

四、SHA加密算法

SHA,全称SecureHashAlgorithm,是一种不可逆数据加密算法,无法解密,常用作数字签名来验证文件的有效性。
同样的在加密SHA_Encrypt按钮下,引用Encryption类库中的SHA加密方法,由于不能解密,就不设解密按钮了。

        private void SHA_Encrypt_button_Click(object sender, EventArgs e)
        {
            try
            {
                textBox14.Text = EncryptionManager.SHA1Encrypt(textBox13.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

随后在界面上只要输入加密的数据就可以了,点击SHA_Encrypt按钮,在不可逆加密数据框中会得到加密后数据,如图。
在这里插入图片描述

五、MD5加密算法

MD5全称是message-digest algorithm 5,简单的说就是单向的加密,也就是说无法根据密文推导出明文,也是一种不可逆加密算法。
同样的在加密MD5_Encrypt按钮下,引用Encryption类库中的MD5加密方法,同样由于不能解密,就不设解密按钮了。

        private void MD5_Encrypt_button_Click(object sender, EventArgs e)
        {
            try
            {
                textBox16.Text = EncryptionManager.MD5Encrypt(textBox15.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

随后在界面上同样只要输入加密的数据就可以了,点击MD5_Encrypt按钮,在不可逆加密数据框中会得到加密后数据,如图。
在这里插入图片描述

结语

以上就是C#中几种加密算法的集成及应用介绍,运用十分简单,导入Encryption类库,傻瓜式引用指定的方法,就能轻松的加密解密数据。
Encryption类库下载地址:https://download.csdn.net/download/weixin_44239774/87266050
文中创建的demo,可以充当加密解密小工具使用,需要的可以前往以下链接下载:https://download.csdn.net/download/weixin_44239774/87266103
需要类库源代码的同学,也可以留下邮箱~~~

最后

从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,能力越强机会才越多。

因为入门学习阶段知识点比较杂,所以我讲得比较笼统,大家如果有不懂的地方可以找我咨询,我保证知无不言言无不尽,需要相关资料也可以找我要,我的网盘里一大堆资料都在吃灰呢。

干货主要有:

①1000+CTF历届题库(主流和经典的应该都有了)

②CTF技术文档(最全中文版)

③项目源码(四五十个有趣且经典的练手项目及源码)

④ CTF大赛、web安全、渗透测试方面的视频(适合小白学习)

⑤ 网络安全学习路线图(告别不入流的学习)

⑥ CTF/渗透测试工具镜像文件大全

⑦ 2023密码学/隐身术/PWN技术手册大全

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

扫码领取

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对您的问题,我可以给您提供一些参考。 DES算法加密和解密示例代码: ```csharp using System; using System.IO; using System.Security.Cryptography; public class DESExample { private static readonly byte[] Key = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }; private static readonly byte[] IV = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 }; public static void EncryptFile(string inputFilePath, string outputFilePath) { using var des = new DESCryptoServiceProvider(); using var inputStream = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read); using var outputStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write); des.Key = Key; des.IV = IV; using var encryptor = des.CreateEncryptor(); using var cryptoStream = new CryptoStream(outputStream, encryptor, CryptoStreamMode.Write); inputStream.CopyTo(cryptoStream); cryptoStream.FlushFinalBlock(); } public static void DecryptFile(string inputFilePath, string outputFilePath) { using var des = new DESCryptoServiceProvider(); using var inputStream = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read); using var outputStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write); des.Key = Key; des.IV = IV; using var decryptor = des.CreateDecryptor(); using var cryptoStream = new CryptoStream(inputStream, decryptor, CryptoStreamMode.Read); cryptoStream.CopyTo(outputStream); outputStream.Flush(); } } ``` RSA算法加密和解密示例代码: ```csharp using System; using System.IO; using System.Security.Cryptography; public class RSAExample { private static readonly string PublicKey = "<RSAKeyValue><Modulus>oKI2Hxg7K5Hd6d8DT7+7p6vqoLJpFwNpkBzv/k4rZKw86hs2Gx9zTt2+JzLJ3VYsZq8YfK0V0d85t2c+Jq3D7BjnsiP9i4j6kOaRc7v7GKv4rRAc7S6t7WhrFVg+KQ9dZ5iM6NhrX7oOqB5hLb7p9eN+5VB9X4IWFSz+Q3YE=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>"; private static readonly string PrivateKey = "<RSAKeyValue><Modulus>oKI2Hxg7K5Hd6d8DT7+7p6vqoLJpFwNpkBzv/k4rZKw86hs2Gx9zTt2+JzLJ3VYsZq8YfK0V0d85t2c+Jq3D7BjnsiP9i4j6kOaRc7v7GKv4rRAc7S6t7WhrFVg+KQ9dZ5iM6NhrX7oOqB5hLb7p9eN+5VB9X4IWFSz+Q3YE=</Modulus><Exponent>AQAB</Exponent><P>6DdR7M/CuFjyF3v6MfTnW8MhFwM8Wt4GpBZG9e+y5L8=</P><Q>6J3f2gPQy7E1k1PbR+0WwC5yZPQ/N4WZ4GQvyXq1r5I=</Q><DP>bqbN+qWZJ+Oul9F73BvKm4JNm91qMpbkzqx4WovhD9k=</DP><DQ>Y7e4CKD+5pwu7e4oCzIYs0E3LlUWJf4LkLwN+3Q6w6U=</DQ><InverseQ>g4TlKvQf7r6jVQK2lRrV4Zar0hN6I4oWU1Lm9p1zvAo=</InverseQ><D>aeHvIhO4+Yk7bW+4qo7w5yJjWjyWz3mVW5l1mLb0h8JtPZV12qY8jMHZ0cNzUJ7a1Z1IjWkN73uU+qT0O4O5ZQK0ZyO0zj8FIAJn5wJj7rP8Lw5Ll5Qk7K1jy6h0J0O3mY9Hf6Lg2X4L2u6G4LrD5kiJ8Y2nWZL3V7E0e6YB0=</D></RSAKeyValue>"; public static void EncryptFile(string inputFilePath, string outputFilePath) { using var rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(PublicKey); using var inputStream = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read); using var outputStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write); using var encryptor = rsa.CreateEncryptor(); using var cryptoStream = new CryptoStream(outputStream, encryptor, CryptoStreamMode.Write); inputStream.CopyTo(cryptoStream); cryptoStream.FlushFinalBlock(); } public static void DecryptFile(string inputFilePath, string outputFilePath) { using var rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(PrivateKey); using var inputStream = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read); using var outputStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write); using var decryptor = rsa.CreateDecryptor(); using var cryptoStream = new CryptoStream(inputStream, decryptor, CryptoStreamMode.Read); cryptoStream.CopyTo(outputStream); outputStream.Flush(); } } ``` 以上代码仅供参考,具体实现需要根据您的需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值