`
shirlly
  • 浏览: 1646625 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

c# 对称加密可逆算法

    博客分类:
  • .NET
阅读更多
using System;
using System.IO;
using System.Security.Cryptography;

using System.Text;

namespace DataCrypto
{
    /// <summary>   
    /// 对称加密算法类   
    /// </summary>   
    public class SymmetricMethod
    {

        private SymmetricAlgorithm mobjCryptoService;
        private string Key;
        /// <summary>   
        /// 对称加密类的构造函数   
        /// </summary>   
        public SymmetricMethod()
        {
            mobjCryptoService = new RijndaelManaged();
            Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
        }
        /// <summary>   
        /// 获得密钥   
        /// </summary>   
        /// <returns>密钥</returns>   
        private byte[] GetLegalKey()
        {
            string sTemp = Key;
            mobjCryptoService.GenerateKey();
            byte[] bytTemp = mobjCryptoService.Key;
            int KeyLength = bytTemp.Length;
            if (sTemp.Length > KeyLength)
                sTemp = sTemp.Substring(0, KeyLength);
            else if (sTemp.Length < KeyLength)
                sTemp = sTemp.PadRight(KeyLength, ' ');
            return ASCIIEncoding.ASCII.GetBytes(sTemp);
        }
        /// <summary>   
        /// 获得初始向量IV   
        /// </summary>   
        /// <returns>初试向量IV</returns>   
        private byte[] GetLegalIV()
        {
            string sTemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
            mobjCryptoService.GenerateIV();
            byte[] bytTemp = mobjCryptoService.IV;
            int IVLength = bytTemp.Length;
            if (sTemp.Length > IVLength)
                sTemp = sTemp.Substring(0, IVLength);
            else if (sTemp.Length < IVLength)
                sTemp = sTemp.PadRight(IVLength, ' ');
            return ASCIIEncoding.ASCII.GetBytes(sTemp);
        }
        /// <summary>   
        /// 加密方法   
        /// </summary>   
        /// <param name="Source">待加密的串</param>   
        /// <returns>经过加密的串</returns>   
        public string Encrypto(string Source)
        {
            byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
            MemoryStream ms = new MemoryStream();
            mobjCryptoService.Key = GetLegalKey();
            mobjCryptoService.IV = GetLegalIV();
            ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
            CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
            cs.Write(bytIn, 0, bytIn.Length);
            cs.FlushFinalBlock();
            ms.Close();
            byte[] bytOut = ms.ToArray();
            return Convert.ToBase64String(bytOut);
        }
        /// <summary>   
        /// 解密方法   
        /// </summary>   
        /// <param name="Source">待解密的串</param>   
        /// <returns>经过解密的串</returns>   
        public string Decrypto(string Source)
        {
            byte[] bytIn = Convert.FromBase64String(Source);
            MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
            mobjCryptoService.Key = GetLegalKey();
            mobjCryptoService.IV = GetLegalIV();
            ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
            CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
            StreamReader sr = new StreamReader(cs);
            return sr.ReadToEnd();
        }
    }
}


分享到:
评论

相关推荐

    c# 可逆 加密 解密算法

    - **DES(Data Encryption Standard)**: 是一种早期的对称加密算法,其密钥长度为56位,已被认为安全性较低。 - **3DES(Triple DES)**: 通过多次使用DES算法来提高安全性。 - **AES(Advanced Encryption ...

    c#可逆加密

    总结,"c#可逆加密"主要涉及对称加密算法的使用,特别是AES算法,通过C#的`System.Security.Cryptography`库实现。理解加密和解密的过程,以及如何在实际项目中安全地管理和使用密钥,对于开发人员来说至关重要。...

    C#加密算法汇总

    不同于SHA1和MD5这类散列算法,DES(Data Encryption Standard)是一种对称加密算法,其特点是加密和解密使用相同的密钥。这种方法允许数据在加密后能够被解密还原,适用于需要保密通信的场景。 在C#中,可逆加密...

    C#基于Hmac sha256及Hmac sha 512 做的对称加密解密

    本文将深入探讨如何在C#中利用HMAC(Hash-based Message Authentication Code)算法,特别是HMAC-SHA256和HMAC-SHA512,进行对称加密和解密操作。 首先,让我们理解什么是HMAC。HMAC是一种用于验证数据完整性和来源...

    C#文本加密解密算法示例源代码

    1. **基础加密概念**:在C#中,加密通常涉及使用对称加密(如AES、DES、3DES)和非对称加密(如RSA)。对称加密使用相同的密钥进行加密和解密,速度快但密钥分发困难;非对称加密使用一对公钥和私钥,安全性高但计算...

    C SHARP常用加密算法汇总.docx

    本文将详细讲解两种常见的加密算法:不可逆的哈希加密(包括SHA1和MD5)以及可逆的对称加密(如DES),并展示在C#中如何实现它们。 首先,我们来看不可逆加密算法,这是用于验证数据完整性和身份认证的常见方法。...

    C# DESC 加密解密

    本文将深入探讨C#中DESC(Data Encryption Standard)加密算法的使用,以及与之相关的其他加密方式,如MD5和对称加密。 DESC,全称为数据加密标准,是一种广泛使用的对称加密算法。在C#中,我们可以利用.NET框架...

    C#加密解密源码,有不可逆加密和可逆加密,可逆加密,MD5不可逆加密等几种方法

    **DES**(Data Encryption Standard)是一种对称加密算法,使用相同的密钥进行加密和解密操作。DES的基本版本使用56位密钥,但由于密钥较短,已经不安全,因此在实际应用中通常使用更强大的加密标准,如3DES或AES。 #...

    C#各种加密方式 C# 加密方式

    在C#中,常用的对称加密算法有AES(高级加密标准)、DES(数据加密标准)和Triple DES。例如,使用System.Security.Cryptography命名空间中的Aes类可以实现AES加密。首先创建一个Aes对象,设置密钥和初始化向量,...

    C#Md5加密解密算法

    这部分代码示例可能混淆了加密与解密的概念,实际应用中,对于需要解密的场景,应采用如DES、AES等对称加密算法。 ```csharp private string Encrypt(string strText, string strEncrKey) { byte[] byKey = System...

    C#加密机制实例源码-口令加密Exe【201903】

    2. **Asymmetric Encryption(非对称加密)**:如RSA和DSA算法,使用一对公钥和私钥。C#的RSACryptoServiceProvider和DSACryptoServiceProvider类提供了实现。非对称加密安全性高,但速度相对较慢,通常用于密钥交换...

    C# 密码加密与解密 (DES)

    DES是一种对称加密算法,它使用相同的密钥进行数据加密和解密。 DES算法的基本原理是通过一系列复杂的数学运算,如置换、异或、位移等,将明文数据转化为密文,以保护信息不被未经授权的人获取。C#中的`System....

    C#中实现加密和解密算法

    本文将详细探讨如何在C#中实现非对称加密(如RSA和ECC)以及对称加密(如MD5,SHA系列,DES和AES)算法。 首先,我们来看对称加密,这种类型的加密使用相同的密钥进行加密和解密。MD5(Message-Digest Algorithm 5...

    C#390-口令加密Exe源代码

    1. **密码学基础**:在密码学中,口令加密通常涉及哈希函数、对称加密和非对称加密。哈希函数用于将明文口令转化为固定长度的散列值,如SHA256;对称加密如AES,使用同一密钥进行加密和解密;非对称加密如RSA,使用...

    C#文件加密实例源码_《0528》.rar

    C#中常见的对称加密算法有AES(高级加密标准)、DES(数据加密标准)和TripleDES(三重DES)。AES是目前最常用的对称加密算法,具有较高的安全性。在C#中,可以使用Aes类来实现AES加密。 2. **非对称加密**:非对称...

    一个用于简单密码加密的类c#

    3. **对称加密**:如AES(高级加密标准),它使用相同的密钥进行加密和解密,适合大量数据的快速加密,但不适用于混淆密码,因为混淆通常需要单向过程。 4. **非对称加密**:如RSA,使用一对公钥和私钥,公钥用于...

    C#数据加密简介

    C#中可以使用System.Security.Cryptography命名空间下的类来管理密钥,如RNGCryptoServiceProvider用于随机密钥生成,RSACryptoServiceProvider和DSACryptoServiceProvider用于非对称加密的密钥操作。 四、C#加密...

    C#加密机制实例源码-口令加密Exe(最低分分享)

    C#加密主要依赖于.NET Framework或.NET Core提供的System.Security.Cryptography命名空间,该命名空间包含了多种加密算法,如对称加密、非对称加密、哈希函数以及数字签名等。以下是一些常用加密技术: 1. 对称加密...

    haikang.zip_datagridview_haikang密码_加密算法_加密解密算法

    常见的加密算法有对称加密和非对称加密。对称加密如DES、3DES、AES,使用相同的密钥进行加密和解密,速度快,适合大量数据处理;而非对称加密如RSA、ECC,使用一对公钥和私钥,公钥公开,私钥保密,提供更高的安全性...

    信息安全实验的密码加密解密算法

    4. RSA:RSA是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出。RSA基于大整数因子分解的困难性,拥有公钥和私钥两部分,公钥用于加密,私钥用于解密。RSA在互联网通信中广泛应用于数字...

Global site tag (gtag.js) - Google Analytics