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

C#DEC加密算法

    博客分类:
  • .NET
阅读更多
C#加密算法
using System;
using System.Security.Cryptography;
using System.IO;
using System.Text;

namespace NetTrade
{
 /// <summary>
 /// Security 的摘要说明。
 /// 类中URL及帐号加密使用了不同的KEY。调用URL加密过程如下: 
 ///EIP.Framework.Security objSecurity = new EIP.Framework.Security(); 
 ///objSecurity.EncryptQueryString(''待加密的字符串''); 
 ///解密:objSecurity.DecryptQueryString(''传递过来的参数);
 /// </summary>
 public class Security
 {
  string _QueryStringKey = "yx139222"; //URL传输参数加密Key 
  string _PassWordKey = "yx139222";  //PassWord加密Key 

  public Security() 
  { 
   // 
   // TODO: 在此处添加构造函数逻辑 
   // 
  } 

  ///  
  /// 加密URL传输的字符串 
  ///  
  ///  
  ///  
  public string EncryptQueryString(string QueryString) 
  { 
   return Encrypt(QueryString,_QueryStringKey); 
  } 

  ///  
  /// 解密URL传输的字符串 
  ///  
  ///  
  ///  
  public string DecryptQueryString(string QueryString) 
  { 
   return Decrypt(QueryString,_QueryStringKey); 
  } 

  ///  
  /// 加密帐号口令 
  ///  
  ///  
  ///  
  public string EncryptPassWord(string PassWord) 
  { 
   return Encrypt(PassWord,_PassWordKey); 
  } 

  ///  
  /// 解密帐号口令 
  ///  
  ///  
  ///  
  public string DecryptPassWord(string PassWord) 
  { 
   return Decrypt(PassWord,_PassWordKey); 
  } 
   
  ///  
  /// DEC 加密过程 
  ///  
  ///  
  ///  
  ///  
  public string Encrypt(string pToEncrypt,string sKey)   
  {   
   DESCryptoServiceProvider des = new DESCryptoServiceProvider();  //把字符串放到byte数组中   
    
   byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);   
   //byte[]  inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);   
   
   des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);  //建立加密对象的密钥和偏移量 
   des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);   //原文使用ASCIIEncoding.ASCII方法的GetBytes方法  
   MemoryStream ms = new MemoryStream();     //使得输入密码必须输入英文文本 
   CryptoStream cs = new CryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write);   
  
   cs.Write(inputByteArray, 0, inputByteArray.Length);   
   cs.FlushFinalBlock();   

   StringBuilder ret = new  StringBuilder();   
   foreach(byte b in ms.ToArray())   
   {   
    ret.AppendFormat("{0:X2}", b);   
   }   
   ret.ToString();   
   return  ret.ToString();   
  }   

  ///  
  /// DEC 解密过程 
  ///  
  ///  
  ///  
  ///  
  public string Decrypt(string pToDecrypt, string sKey)   
  {   
   DESCryptoServiceProvider des = new DESCryptoServiceProvider();   
  
   byte[] inputByteArray = new byte[pToDecrypt.Length / 2];   
   for(int x = 0; x < pToDecrypt.Length / 2; x++)   
   {   
    int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));   
    inputByteArray[x]  =  (byte)i;   
   }   
  
   des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);  //建立加密对象的密钥和偏移量,此值重要,不能修改   
   des.IV  = ASCIIEncoding.ASCII.GetBytes(sKey);   
   MemoryStream ms = new MemoryStream();   
   CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(),CryptoStreamMode.Write);   
    
   cs.Write(inputByteArray, 0, inputByteArray.Length);   
   cs.FlushFinalBlock();   

   StringBuilder ret = new StringBuilder();  //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象   
              
   return System.Text.Encoding.Default.GetString(ms.ToArray());   
  }  

  ///  
  /// 检查己加密的字符串是否与原文相同 
  ///  
  ///  
  ///  
  ///  
  ///  
  public bool ValidateString(string EnString, string FoString, int Mode) 
  { 
   switch (Mode) 
   { 
    default: 
    case 1: 
     if (Decrypt(EnString,_QueryStringKey) == FoString.ToString()) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    case 2: 
     if (Decrypt(EnString,_PassWordKey) == FoString.ToString()) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
   } 
  }

//以下为另外一种加解密方式,比较简单 

  public string DecryptStr(string rs) //顺序减1解码
  {
   byte[] by=new byte[rs.Length];
   for(int i=0;i<=rs.Length-1;i++)
   {
    by[i]=(byte)((byte)rs[i]-1);
   }
   rs="";
   for(int i=by.Length-1;i>=0;i--)
   {
    rs+=((char)by[i]).ToString();
   }
   return rs;
  }

  public string EncryptStr(string rs) //倒序加1加密
  {
   byte[] by=new byte[rs.Length];
   for(int i=0;i<=rs.Length-1;i++)
   {
    by[i]=(byte)((byte)rs[i]+1);
   }
   rs="";
   for(int i=by.Length-1;i>=0;i--)
   {
    rs+=((char)by[i]).ToString();
   }
   return rs;
  }
 } 
} 




分享到:
评论

相关推荐

    C#加密算法汇总 C#加密算法

    C#加密算法汇总 C#加密算法 C#加密算法 C#加密算法

    C#国密加密算法SM2,SM3,SM4

    C#国密加密算法SM2,SM3,SM4的一个实现案例,不涉及具体的算法剖析,在网络上关于这个加密算法的文档较少,切在跨语言加密解密上会存在一些问题,所以整理。

    C#可逆加密算法收集

    本文将深入探讨C#语言中实现的可逆加密算法,特别聚焦于Rijndael算法的运用,这一算法是AES(Advanced Encryption Standard)标准的核心,被广泛用于数据保护、网络安全以及各种保密通信场景。 ### C#中的Rijndael...

    C#加密算法类库

    C#加密算法类库是一个专为.NET开发者设计的工具,它包含了多种常见的加密算法实现,以便在C#项目中方便地进行数据加密和解密。这个类库通常以.dll文件的形式提供,允许开发者通过引用该文件来直接使用其封装好的加密...

    C# 对称加密算法加密字段

    本篇将详细介绍C#中对称加密算法的应用,以及如何利用`ICryptoTransform`接口进行加解密操作。 对称加密算法的特点在于加密和解密使用的是同一个密钥,这使得它在处理大量数据时效率较高。在C#中,主要通过System....

    C# AES 加密算法

    在C#中,AES加密算法提供了强大的安全性,适用于各种数据保护场景,如文件加密、网络通信的保密性等。然而,正确使用加密技术至关重要,包括选择适当的密钥长度、管理好密钥和IV、以及了解潜在的安全风险,如密钥...

    C# Desc加密算法

    ### C# DESC 加密算法详解 #### 一、概述 在信息安全领域,数据加密技术扮演着至关重要的角色。本文将详细介绍如何使用 C# 实现 DESC(Data Encryption Standard Cipher)加密算法,并提供完整的代码示例及解析。 ...

    C#实现RSA加密算法

    标题提到的"C#实现RSA加密算法"着重讲述了如何在C#中利用大整数类BigInteger和RSACryptoServiceProvider类来完成私钥加密公钥解密的过程。以下是对这个话题的详细解释: 1. **RSA算法基础**: RSA算法由Rivest、...

    c#常用加密算法.pdf

    根据提供的文件信息,本文将详细解析C#中几种常用的加密算法,包括MD5、RC2以及RSA,并重点介绍这些加密算法的基本概念、应用场景及其在C#中的具体实现方式。 ### 一、MD5加密算法 #### 1.1 概述 MD5(Message-...

    c# 可逆 加密 解密算法

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

    C#开发的对称加密算法

    在IT领域,对称加密算法是一种广泛用于数据保护的技术,特别是在C#编程环境中。这种算法基于一个密钥,用于加密和解密数据,因此被称为“对称”,因为用于加密和解密的密钥是相同的。下面我们将深入探讨C#中的对称...

    C#中关于RSA加密算法(案例代码) c#经典案例.pdf

    C#中RSA加密算法详解 在C#程序中,RSA加密算法是一种广泛使用的公钥加密算法。 RSA加密算法于1977年由Ron Rivest、Adi Shamir和Len Adleman在美国麻省理工学院开发的。RSA取名来自开发他们三者的名字。RSA是目前最...

    基于C#加密解密算法的实现

    本文将深入探讨如何在C#编程环境中实现几种常见的加密算法,包括RSA非对称加密、MD5哈希加密以及对称加密,同时也会提及公钥和私钥的概念。 首先,让我们了解一下对称加密。对称加密是最基础的加密方式,它使用同一...

    椭圆加密算法ECC算法C#实现

    我这里是在VS下创建的项目 直接复制进去就可以运行 里面还处理了无法保存到本地的方法

    C#实现的DES加密算法类

    本教程将深入探讨如何在C#中实现DES加密算法,并利用提供的dll文件在项目中集成这一功能。 首先,我们需要了解DES的基本工作原理。DES使用56位的密钥,通过一系列复杂的变换(包括置换、异或和循环左移等操作)将64...

    C# 基于Rijndael加密算法对XML文档加密和解密

    C# 基于Rijndael加密算法对XML文档加密和解密

    C#加密算法大全(超实用!!)

    本文将深入探讨C#中常见的几种加密算法,包括对称加密、非对称加密、哈希加密以及特定的MD5、RSA、DES和ElGamal算法,并结合C#编程语言提供相关的程序代码示例。 1. **对称加密算法**:对称加密是最传统的加密方式...

    C#实现DES加密算法

    在C#中实现DES加密算法,可以利用.NET框架提供的System.Security.Cryptography命名空间中的DESCryptoServiceProvider类。本篇文章将深入探讨如何在C#环境中使用VS2008开发工具来实现DES加密与解密。 首先,我们需要...

    c#编写关于AES与DES加密算法

    C#实现AES与DES加密算法 本资源提供了C#语言实现AES与DES加密算法的示例代码,包括加密和解密函数的实现。AES(Advanced Encryption Standard,高级加密标准)和DES(Data Encryption Standard,数据加密标准)都是...

Global site tag (gtag.js) - Google Analytics