首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在C# .net 3.5中加密和解密字符串

在C# .NET 3.5中,可以使用System.Security.Cryptography命名空间中的类来加密和解密字符串。常用的加密算法有对称加密和非对称加密。

对称加密使用相同的密钥进行加密和解密,速度较快。常见的对称加密算法有DES、3DES和AES。在C# .NET 3.5中,可以使用System.Security.Cryptography.SymmetricAlgorithm类和其派生类进行对称加密操作。

示例代码:

代码语言:txt
复制
using System;
using System.Security.Cryptography;
using System.Text;

public class EncryptionHelper
{
    // 对称加密算法密钥,长度根据算法不同而不同
    private static byte[] key = Encoding.UTF8.GetBytes("12345678");

    // 对称加密算法初始化向量,长度根据算法不同而不同
    private static byte[] iv = Encoding.UTF8.GetBytes("87654321");

    // 使用DES算法加密字符串
    public static string EncryptDES(string plainText)
    {
        using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
        {
            byte[] inputBytes = Encoding.UTF8.GetBytes(plainText);
            using (MemoryStream memoryStream = new MemoryStream())
            {
                using (CryptoStream cryptoStream = new CryptoStream(memoryStream, des.CreateEncryptor(key, iv), CryptoStreamMode.Write))
                {
                    cryptoStream.Write(inputBytes, 0, inputBytes.Length);
                    cryptoStream.FlushFinalBlock();
                    return Convert.ToBase64String(memoryStream.ToArray());
                }
            }
        }
    }

    // 使用DES算法解密字符串
    public static string DecryptDES(string encryptedText)
    {
        using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
        {
            byte[] inputBytes = Convert.FromBase64String(encryptedText);
            using (MemoryStream memoryStream = new MemoryStream())
            {
                using (CryptoStream cryptoStream = new CryptoStream(memoryStream, des.CreateDecryptor(key, iv), CryptoStreamMode.Write))
                {
                    cryptoStream.Write(inputBytes, 0, inputBytes.Length);
                    cryptoStream.FlushFinalBlock();
                    return Encoding.UTF8.GetString(memoryStream.ToArray());
                }
            }
        }
    }

    // 使用AES算法加密字符串
    public static string EncryptAES(string plainText)
    {
        using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider())
        {
            byte[] inputBytes = Encoding.UTF8.GetBytes(plainText);
            using (MemoryStream memoryStream = new MemoryStream())
            {
                using (CryptoStream cryptoStream = new CryptoStream(memoryStream, aes.CreateEncryptor(key, iv), CryptoStreamMode.Write))
                {
                    cryptoStream.Write(inputBytes, 0, inputBytes.Length);
                    cryptoStream.FlushFinalBlock();
                    return Convert.ToBase64String(memoryStream.ToArray());
                }
            }
        }
    }

    // 使用AES算法解密字符串
    public static string DecryptAES(string encryptedText)
    {
        using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider())
        {
            byte[] inputBytes = Convert.FromBase64String(encryptedText);
            using (MemoryStream memoryStream = new MemoryStream())
            {
                using (CryptoStream cryptoStream = new CryptoStream(memoryStream, aes.CreateDecryptor(key, iv), CryptoStreamMode.Write))
                {
                    cryptoStream.Write(inputBytes, 0, inputBytes.Length);
                    cryptoStream.FlushFinalBlock();
                    return Encoding.UTF8.GetString(memoryStream.ToArray());
                }
            }
        }
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        string plainText = "Hello, World!";
        
        // 使用DES算法加密字符串
        string encryptedTextDES = EncryptionHelper.EncryptDES(plainText);
        Console.WriteLine("Encrypted (DES): " + encryptedTextDES);
        
        // 使用DES算法解密字符串
        string decryptedTextDES = EncryptionHelper.DecryptDES(encryptedTextDES);
        Console.WriteLine("Decrypted (DES): " + decryptedTextDES);
        
        // 使用AES算法加密字符串
        string encryptedTextAES = EncryptionHelper.EncryptAES(plainText);
        Console.WriteLine("Encrypted (AES): " + encryptedTextAES);
        
        // 使用AES算法解密字符串
        string decryptedTextAES = EncryptionHelper.DecryptAES(encryptedTextAES);
        Console.WriteLine("Decrypted (AES): " + decryptedTextAES);
    }
}

在上述示例代码中,我们使用了DES和AES对称加密算法对字符串进行加密和解密。key和iv分别代表密钥和初始化向量,可以根据实际需求进行修改。

请注意,C# .NET 3.5已经较为古老,推荐升级到最新的.NET版本以获得更好的性能和安全性。此外,还应该注意密钥和加密算法的选择,以确保安全性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#.NET中的字符串

原文地址:Jon Skeet:Strings in C# and .NET System.String 类型(C#语言中对应的别名是string)是.NET最重要的类型之一,不幸的是它身上存在了太多的误解...(我将使用“null”,因为它是Unicode代码图表中的详细信息;不要将它与C#中的null关键字混为一谈——char是值类型,所以它不能是一个空引用).NET中,字符串中可以包含空字符,就字符串本身具有的方法而言...这可能是语言层面提供的,C#VB.NET中确实都是如此。...Literals就是你如何将字符串硬编码到C#程序中的方式。C#中有两种类型的字符串字面值方式——常规字符串字面值逐字字符串字面值。...字符串调试器 许多人在调试器中检查字符串时会遇到一些问题,无论是使用VS.NET 2002还是VS.NET 2003。

2.4K100

java+sm4+加密算法_SM4加密算法实现JavaC#相互加密解密

SM4加密算法实现JavaC#相互加密解密 近期由于项目需要使用SM4对数据进行加密,然后传给Java后台,Java后台使用的也是SM4的加密算法但是就是解密不正确,经过一步步调试发现Java中好多数据类型与...C#的相同的数据类型是存在不同的比如:byteJava中范围是-127~128,而C#中的范围是0~255,这就导致使用C#加密的明文产生的密文到Java中解密不正确。...Java之间不能相互加密解密,那就让他们使用同一个语言进行加密解密,就是加密解密都是用C#就可以完美的解决了。...下面是C++的项目 创建C++项目(我的项目名这个不一样) C++项目添加引用C#项目。...#的SM4加密解密问题。

79210

.NET中的DES对称加密

第二种密文分组链接方式(CBC)         密文分组链接方式,CBC方式下,每个明文组xi加密前与先一组密文按位模二加后,再送到DES加密,CBC方式克服了ECB方式报内组重的缺点,但由于明文组加密前与一组密文有关...8.比如: 加密字符串为为AAA,则补位为AAA55555;加密字符串为BBBBBB,则补位为BBBBBB22;加密字符串为CCCCCCCC,则补位为CCCCCCCC88888888. .NET中的DES...类库封装情况,加解密需要传入一个KeyIV向量。...各大语言互操作解决方案: C与C#通讯加密之C语言DES的cbc pkcs7的实现 C与C#通讯加密之C语言DES的cbc pkcs7的实现(二) pythonc#通用一致的des加密采用CBCPKCS7...php实现3DES加密算法,工作模式CBC,填充模式PKCS7 Padding 用 Java 解密 C# 加密的数据(DES) Applied Crypto++: Block Ciphers

1.8K100

新手友好、轻量级的C#.NET万能工具库

前言 今天分享一个基于MIT License协议开源、免费、新手友好、轻量级的C#/.NET万能工具库、帮助类库(支持.NET.NET Core,可以帮助开发者们减少常见重复功能方法查找,提高开发工作效率...项目官方介绍 全龄段友好的C#万能工具库,码数吐司库,包含一些常用的操作类,大都是静态类,加密解密,反射操作,权重随机筛选算法,分布式短id,表达式树,linq扩展,文件压缩,多线程下载,硬件信息,字符串扩展方法...GitHub开源地址:https://github.com/ldqk/Masuit.Tools 加密解密/安全/编解码 Excel处理 DataTable帮助类 Cookie操作辅助类 多线程下载器...https://github.com/ldqk/Masuit.Tools 优秀项目框架精选 该项目已收录到C#/.NET/.NET Core优秀项目框架精选中,关注优秀项目框架精选能让你及时了解...C#、.NET.NET Core领域的最新动态最佳实践,提高开发工作效率质量。

31410

直面冥王:最新爆发的C#敲诈木马HadesLocker解读

与之相比,这次的变种增加了多层嵌套解密、动态反射调用 等复杂手段,外加多种混淆技术, 提升了分析难度。 木马加密文件时使用AES256算法, 特定条件下可以还原加密的文件。...Krrxoeoaonmsiyyk.png解密后是一个C#程序集,解密 方法不算复杂,使用固定的字符串“Dlghooxwxclesvxamv” 为key,然后顺序异或加密。...CLib程序集: 接下来的流程CLib程序集 上负责执行,上图可以看到,调用此程序集 时还使用了3个参数,Injection是.net目录 下RegAsm.exe的全路径,parameters为null...第二段数据解密后是木马 将要使用的所有的字符串数据,如赎金支付网址等。...加密了全盘文件后,木马会打开HTMLTXT文件 ,并且修改桌面背景以通知用户支付赎金。

1.8K60

C#实现微信AES-128-CBC加密数据的解密

而有用的数据,都加密着,腾讯给出了解密的方法: 加密数据解密算法 接口如果涉及敏感数据(如wx.getUserInfo当中的 openId unionId ),接口的明文内容将不包含这些敏感数据。...开发者如需要获取敏感数据,需要对接口返回的加密数据( encryptedData )进行对称解密解密算法如下: 对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充。...在网上找C#的AES-128-CBC算法,就没有一个好用的,下载下来半天调不通,看看nodejspython的代码,简单到令人发指,顿时让我的信心再次遭受打击。 ?...想想,如果单独为解密搭nodejs或者python实在不值得,咬牙继续研究.Net下的解密,最有用的来自csdn,感谢作者 http://download.csdn.net/detail/u010331683.../5798913 但是,还是无法正常使用,分析原因跟转码有关系,微信示例中是用base64来存储密文、密钥向量的,但C#示例是用utf8,经过一番痛苦的调试,终于搞定,把用到的代码直接粘贴过来: 调用代码

3.3K90

c# 加壳工具推荐

当前C# .net语言的应用范围越来越广泛,IIS 的服务器架构后台代码、桌面应用程序的 winform 、Unity3d 的逻辑脚本都在使用。C# .net 具备强大的便捷特性,使得开发成本极低。...解决方案 深思自主研发了为 C# .net 语言做保护的外壳:Virbox Protector .NET版。...将C# .net 编译成的执行程序(.exe),动态库(.dll)直接拖入加壳工具即可完成保护操作,十分方便。并且效果上已经完全看不到源码中的逻辑。...Virbox Protector加密功能介绍 名称混淆(.NET) 将 .net 的方法名类名使用随机字符串重新命名,导出外部的名称不会改变。...函数级保护-代码加密 原理 代码加密是使用动态代码技术,将原始方法字节码加密,执行时才将方法解密并执行的保护方式。 功能 防脱壳,防止直接 Dump。 优点 1、运行效率高,几乎没有性能损失。

1.8K20

c# 加壳工具推荐

当前C# .net语言的应用范围越来越广泛,IIS 的服务器架构后台代码、桌面应用程序的 winform 、Unity3d 的逻辑脚本都在使用。C# .net 具备强大的便捷特性,使得开发成本极低。...解决方案 深思自主研发了为 C# .net 语言做保护的外壳:Virbox Protector .NET版。...将C# .net 编译成的执行程序(.exe),动态库(.dll)直接拖入加壳工具即可完成保护操作,十分方便。并且效果上已经完全看不到源码中的逻辑。...Virbox Protector加密功能介绍 名称混淆(.NET) 将 .net 的方法名类名使用随机字符串重新命名,导出外部的名称不会改变。...函数级保护-代码加密 原理 代码加密是使用动态代码技术,将原始方法字节码加密,执行时才将方法解密并执行的保护方式。 功能 防脱壳,防止直接 Dump。 优点 1、运行效率高,几乎没有性能损失。

2.5K10

c 语言加壳项目,C 加壳工具,快速完成加密保护

当前C# .net语言的应用范围越来越广泛,IIS 的服务器架构后台代码、桌面应用程序的 winform 、Unity3d 的逻辑脚本都在使用。C# .net 具备强大的便捷特性,使得开发成本极低。...01解决方案 深思自主研发了为 C# .net 语言做保护的外壳:Virbox Protector .NET版。...将C# .net 编译成的执行程序(.exe),动态库(.dll)直接拖入加壳工具即可完成保护操作,十分方便。并且效果上已经完全看不到源码中的逻辑。...02名称混淆(.NET) 将 .net 的方法名类名使用随机字符串重新命名,导出外部的名称不会改变。...05函数级保护-代码加密 原理 代码加密是使用动态代码技术,将原始方法字节码加密,执行时才将方法解密并执行的保护方式。 功能 防脱壳,防止直接 Dump。 优点 1、运行效率高,几乎没有性能损失。

1.7K20

【干货】VueJs里利用CryptoJs实现Md5加密3Des加密解密

前言 前我们介绍的用于vue用于数据签名的操作,《【干货】Vue TypeScript根据类生成签名字符串》,其目的就是用于生成这个再转MD5加密的模式进行校验,原来我们C#Android里面已经实现这些方式...一般网上的加解密最后红框这里我们直接是输出 return encrypted.tostring(),但是因为我们自己的C#Android的3Des的加解密都是最后输出的16进制的字符串,所以我们改为红框这里输出的样式...这里比较重要就是红框里面,因为我们的加密最后输出的是16进制的字符串,所以我们解密的时候首先要把16进制字符串转为WordArray格式,再转换为BASE64的字符串,最后再进行解密。...我们test.ts里面定义了两个字符串,一个des3encryptstr的加密后的字符串,一个des3decryptstr是解密后的字符串,然后又加上了两个方法,一个是加密的方法btnencrypt,...然后test.vue.html里面加上双向绑定显示以及一个加密按钮一个解密按钮。 页面效果 ? 未加密的效果 ? 点击加密后的效果 ? 点击解密后的效果

5.1K41

C#操作Sql Server数据库以及MD5加密存储

本文链接:https://blog.csdn.net/weixin_42449444/article/details/90476011 写在前面: 简单地写一下MD5加密存储C#如何操作Sql Server...Convert来将字节型数组转化为字符串,这个字符串即为加密后的密码。...,得到加密后的密码 MD5是具有不可逆性的,一旦加密之后就无法再进行解密。...我们一般是账号注册时将密码通过MD5加密后存入数据库,新注册账号之后。...账号登录时我们需要判断输入的密码是否正确,而MD5加密是不可逆的 也就意味着它无法解密,所以我们需要将用户输入的密码再加密一次然后再与数据库中已加密存储的密码进行比对,如果比对结果一致则登陆成功。

1.9K20

如何逆向破解HawkEye keylogger键盘记录器,进入攻击者邮箱?

加密混淆的RTF文件 在上图中你可以看到,漏洞利用代码中的shellcode字段被模糊变形以避免杀毒软件的检测,经过代码提取、清理和解密之后,我确定了漏洞利用代码的shellcode将会从一个未知域名...最有趣的是我反编译代码中发现了一个名为form1()的C#构造函数,这就是HawkEye keylogger软件的配置存储函数,但攻击者使用了base64对远程控制管理的电子邮件FTP信息进行了加密隐藏...keylogger配置信息 但是,这些加密的数据并不总是安全的,特别是当反编译源代码中就可以看出解密程序来时 解密函数调用 下图就是解密函数,它包含两个字符串参数encrypted bytessecretkey...,密钥字符串是固定的硬编码hawkspysoftwares 解密程序 同时,HawkEye keylogger使用者还使用了Unicode字符串 “099u787978786″对密码字符串进行加盐处理...keylogger 使用的加密方法 出于好奇,我复制了代码的解密部分,并进行了相应修改,MS VisualStudio程序下编译,最终解密成功,包含了邮件FTP账户密码(对不起,我需要对解密信息进行模糊处理

1.4K80

【asp.net core 系列】12 数据加密算法

前言 这一篇我们将介绍一下.net core 的加密解密Web应用程序中,用户的密码会使用MD5值作为密码数据存储起来。而在其他的情况下,也会使用加密解密的功能。...常见的加密算法分为对称加密非对称加密。所谓的对称加密是指加密密钥和解密密钥是同一个,非对称加密是指加密密钥和解密密钥不同。...而我们常应用在保存用户登录密码这个过程中的MD5本质上并不是加密算法,而是一种信息摘要算法。不过MD5尽量保证了每个字符串最后计算出来的值都不一样,所以密码保存中常用MD5做为保密值。 ? 1....那么,我们来看看常见的对称加密算法有哪些吧,以及C#该如何实现。 1.1 DES DESede 算法 DES算法DESede算法(又称三重DES算法) 统称DES系列算法。...这里就不对原理做过多的介绍了,来看看.net core里如何实现DES加/解密吧。

1.3K30
领券