using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
  
namespace ConsoleApplication1
{
    class Program
    {
        static string encryptKey = "Oyea";    //定义密钥 
  
        #region 加密字符串 
        /// <summary> /// 加密字符串  
        /// </summary> 
        /// <param name="str">要加密的字符串</param> 
        /// <returns>加密后的字符串</returns> 
        static string Encrypt(string str) 
        {   
            DESCryptoServiceProvider descsp = new DESCryptoServiceProvider();   //实例化加/解密类对象  
    
            byte[] key = Encoding.Unicode.GetBytes(encryptKey); //定义字节数组,用来存储密钥   
   
            byte[] data = Encoding.Unicode.GetBytes(str);//定义字节数组,用来存储要加密的字符串 
     
            MemoryStream MStream = new MemoryStream(); //实例化内存流对象     
  
            //使用内存流实例化加密流对象  
            CryptoStream CStream = new CryptoStream(MStream, descsp.CreateEncryptor(key, key), CryptoStreamMode.Write);    
  
            CStream.Write(data, 0, data.Length);  //向加密流中写入数据     
  
            CStream.FlushFinalBlock();              //释放加密流     
  
            return Convert.ToBase64String(MStream.ToArray());//返回加密后的字符串 
        
        #endregion
  
        #region 解密字符串  
        /// <summary> 
        /// 解密字符串  
        /// </summary> 
        /// <param name="str">要解密的字符串</param> 
        /// <returns>解密后的字符串</returns>   
        static string Decrypt(string str) 
        {     
            DESCryptoServiceProvider descsp = new DESCryptoServiceProvider();   //实例化加/解密类对象   
     
            byte[] key = Encoding.Unicode.GetBytes(encryptKey); //定义字节数组,用来存储密钥   
    
            byte[] data = Convert.FromBase64String(str);//定义字节数组,用来存储要解密的字符串 
      
            MemoryStream MStream = new MemoryStream(); //实例化内存流对象     
   
            //使用内存流实例化解密流对象      
            CryptoStream CStream = new CryptoStream(MStream, descsp.CreateDecryptor(key, key), CryptoStreamMode.Write);  
   
            CStream.Write(data, 0, data.Length);      //向解密流中写入数据    
  
            CStream.FlushFinalBlock();               //释放解密流     
  
            return Encoding.Unicode.GetString(MStream.ToArray());       //返回解密后的字符串 
        
        #endregion
  
        static void Main(string[] args)
        {
            Console.Write("请输入要加密的字符串:");   //提示输入字符串     
            Console.WriteLine();                  //换行输入  
            string str = Console.ReadLine();     //记录输入的字符串     
            string strNew = Encrypt(str);              //加密字符串     
            Console.WriteLine("加密后的字符串:" + strNew);  //输出加密后的字符串     
            Console.WriteLine("解密后的字符串:" + Decrypt(strNew)); //解密字符串并输出    
            Console.ReadLine();
        }
    }
}

C#一个字符串的加密与解密的更多相关文章

  1. 【Java】通过DES加密和解密工具,对字符串进行加密和解密操作

    分享一个非常不错的字符串加密和解密的程序. 可以指定不同的密钥对同一字符串进行不同的加密操作,增强加密性能. Java代码如下: package com.app; import java.securi ...

  2. Java 实现字符串的加密与解密

    package com.wangbo.util; import java.security.Key; import java.security.Security; import javax.crypt ...

  3. java对字符串进行加密和解密(以下是来自其他博主)

    背景:需要对读取数据库配置的文件进行加密,防止他人拿到数据,而对自己的代码,有要实现进行解密,网上给的加密方式,什么MD5,base64,还有等等,都太复杂,而且有些是单向的,只加密不解密,以下代码, ...

  4. ASP.NET数据库连接字符串的加密与解密

    ASP.NET web.config中,数据库连接字符串的加密与解密. 虽然不怎么新鲜,但相信还是有许多人不知道,好,不说废话,直接给方法:开始--->运行,输入cmd,接着输入以下内容 加密: ...

  5. MVC项目实践,在三层架构下实现SportsStore-10,连接字符串的加密和解密

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

  6. js对字符串进行加密和解密方法!

    在做一些微信小程序,或混合 app 的时候,或者是考虑到一些 JS 数据安全的问题.可能会使用到 JS 对用户信息进行缓存. 例如在开发:微信小程序对用户进行加密缓存,开发混合APP对用户信息进行加密 ...

  7. js对字符串进行加密和解密

    //字符串进行加密 function compileStr(code){   var c=String.fromCharCode(code.charCodeAt(0)+code.length); fo ...

  8. C#中对字符串的加密和解密

    加密: /// <summary> /// 对字符串进行加密 /// </summary> /// <param name="proclaimText" ...

  9. ABAP字符串的加密与解密

    FIEB_PASSWORD_DECRYPT:字符串解密:FIEB_PASSWORD_ENCRYPT:字符串加密.旧版本的可以用. PARAMETERS:str1 type char32 OBLIGAT ...

随机推荐

  1. hdoj 2767 Proving Equivalences【求scc&&缩点】【求最少添加多少条边使这个图成为一个scc】

    Proving Equivalences Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  2. java模拟DVD管理器

    import java.util.*;import java.text.*;class DVDSet{    String[] name = new String[50]; //名字    int[] ...

  3. js select级联,上面分类,下面是内容

    js select级联,上面分类,下面是内容. js级联效果如下: 分类: 请选择 水果 蔬菜 其他 内容: // html和js代码如下:     <html>      <hea ...

  4. iOS新建项目基本配置

    项目整体同xib+代码的方式 1.调整项目文件结构 2.将资源图片导入工程 General->LaunchScreen 修改 3.App名称修改 info->Bundle name 4.删 ...

  5. JAVA中list,set,数组之间的转换详解

    JAVA的list,set,数组之间的转换,主要是使用Apache Jakarta Commons Collections,具体的方法如下:import org.apache.commons.coll ...

  6. ABAP SAPGUI_PROGRESS_INDICATOR 显示数据处理进度

    ABAP处理的数据量较大时,盯着一动不动的选择屏幕是不是很无聊?? LOOP AT I_TAB. DESCRIBE TABLE I_TAB[] LINES L_LIN. L_PERC = SY-TAB ...

  7. 【转】android的startActivityForResult学习心得

    http://blog.csdn.net/yanzi1225627/article/details/7800529 从昨晚到现在终于调试通了一个startActivityForResult的例子,网上 ...

  8. iBatis自动生成的主键 (Oracle,MS Sql Server,MySQL)【转】

    iBatis的sqlMap配置文件的selectKey元素有个type属性,可以指定pre或者post表示前生成(pre)还是后生成(post). Oracle设置 <!-- Oracle SE ...

  9. git 远程 强制合并本地

    反过来,如果希望用代码库中的文件完全覆盖本地工作版本. 方法如下: git reset --hard git pull

  10. [Node.js] Exporting Modules in Node

    In this lesson, you will learn the difference between the exports statement and module.exports. Two ...