using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Security.Cryptography;
using System.Text;
using System.IO; namespace WeiXin.Core
{
public class Cryptography
{
#region SHA1加密
public static string SHA1_EncryptToFormat(string str)
{
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
StringBuilder encryptText = new StringBuilder();
byte[] strRes = Encoding.Default.GetBytes(str);
strRes = sha1.ComputeHash(strRes);
foreach (byte iByte in strRes)
{
encryptText.AppendFormat("{0:x2}", iByte);
}
sha1.Dispose();
return encryptText.ToString();
} public static string SHA1_EncryptToBase64String(string str)
{
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
byte[] strRes = Encoding.UTF8.GetBytes(str);
strRes = sha1.ComputeHash(strRes);
sha1.Dispose();
return Convert.ToBase64String(strRes);
}
public static byte[] SHA1_Encrypt(byte[] str)
{
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
byte[] strHash = sha1.ComputeHash(str);
sha1.Dispose();
return strHash;
}
#endregion #region 对称加密 /// <summary>
/// 对称算法,机密字符串
/// </summary>
/// <param name="Value">要加密的字符串</param>
/// <returns>covert成ToBase64String类型的加密字符串</returns>
public static string DataEncrypt(string Value)
{
try
{
byte[] buffer1 = Convert.FromBase64String("iw/k5uRzMdk=");
byte[] buffer2 = Convert.FromBase64String("c/DP9HnKryk=");
DESCryptoServiceProvider provider1 = new DESCryptoServiceProvider();//实例化des对称加密标准
provider1.Key = buffer1;//机密密钥
provider1.IV = buffer2; //初始化向量
ICryptoTransform transform1 = provider1.CreateEncryptor(provider1.Key, provider1.IV);//定义基本的加密转换运算
byte[] buffer3 = Encoding.UTF8.GetBytes(Value);//将要加密的字符串编码为一个字节序列
MemoryStream stream1 = new MemoryStream();//内存流
CryptoStream stream2 = new CryptoStream(stream1, transform1, CryptoStreamMode.Write);//加密流
stream2.Write(buffer3, , buffer3.Length);
stream2.FlushFinalBlock();//用缓冲区的当前状态更新基础数据源或储存库,随后清除缓冲区。
stream2.Close();//关闭当前流并释放与之关联的所有资源(如套接字和文件句柄)
return Convert.ToBase64String(stream1.ToArray());
}
catch
{
return "error";
}
} /// <summary>
/// 对称算法,解密字符串
/// </summary>
/// <param name="Value">需要解密的字符串</param>
/// <returns>将解密后的流写入字节数组,然后将字节数组解码为一个字符串</returns>
public static string DataDecrypt(string Value)
{
try
{
byte[] buffer1 = Convert.FromBase64String("iw/k5uRzMdk=");
byte[] buffer2 = Convert.FromBase64String("c/DP9HnKryk=");
DESCryptoServiceProvider provider1 = new DESCryptoServiceProvider();
provider1.Key = buffer1;
provider1.IV = buffer2;
ICryptoTransform transform1 = provider1.CreateDecryptor(provider1.Key, provider1.IV);//定义基本解密转换运算
byte[] buffer3 = Convert.FromBase64String(Value);
MemoryStream stream1 = new MemoryStream();
CryptoStream stream2 = new CryptoStream(stream1, transform1, CryptoStreamMode.Write);//CryptoStreamMode.Write对加密流的写访问
stream2.Write(buffer3, , buffer3.Length);//按照transform1解密算法向流中写入需要解密的字符串
stream2.FlushFinalBlock();
stream2.Close();
return Encoding.UTF8.GetString(stream1.ToArray());//将流写入字节数组,然后将字节数组解码为一个字符串
}
catch
{
return "error";
}
}
#endregion }
}

Cryptography加密和解密的更多相关文章

  1. 转:system.Security.Cryptography C# 加密和解密

    以下文转自: http://www.360doc.com/content/13/0122/05/19147_261678471.shtml 总结:注册的时候经过MD5加密存进数据库,在登录的时候需要先 ...

  2. python3利用cryptography 进行加密和解密

    我们的日常工作中,一定会遇到需要加密的数据,比如:密码.私密信息... ... 我们不仅要对他们进行加密,更需要对他们进行解密,因为毕竟我们的用户应该不会看得懂加密过后的字符串吧!!! 在python ...

  3. 加密与解密 Sytem.Security.CryptoGraphy

    一.Hash加密,使用HashAlgorithm哈希算法类的派生类 HashAlgorithm派生类包括: KeyedHashAlgorithm: 显示所有加密哈希算法实现均必须从中派生的抽象类. M ...

  4. 【知识积累】DES算法之C#加密&Java解密

    一.前言 在项目需要添加安全模块,客户端调用服务端发布的service必须要经过验证,加密算法采用DES,客户端采用C#进行加密,服务端使用Java进行解密.废话不多说,直接上代码. 二.客户端 客户 ...

  5. .Net中的加密与解密

    加密与解密概述 加密与解密属于数据安全的范畴.在消息传输时,通过对消息进行特殊编码(加密),建立一种安全的交流方式,使得只有发送者所期望的接收者能够理解(解密).这里我们定义一个场景:发送方,接收方, ...

  6. C#使用RSA证书文件加密和解密示例

    修改MSDN上的示例,使之可以通过RSA证书文件加密和解密,中间遇到一个小问题. Q:执行ExportParameters()方法时,回报CryptographicException:该项不适于在指定 ...

  7. DESCryptoServiceProvider加密、解密

    .net名称空间System.Security.Cryptography下DESCryptoServiceProvider类为我们提供了加密和解密方法,我们只需少许代码便可实现加密和解密. 稍感不托的 ...

  8. 基于私钥加密公钥解密的RSA算法C#实现

    RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作. RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一 ...

  9. java c# 加密与解密对照

    原文 java c# 加密与解密对照 最近一直烦恼,java , c# 加密的不同,然后整理了一下,留个备份的轮子: 其中在 java.c#加密转换时,最重要的是 IV 的确定,我常常用如下方法使得j ...

随机推荐

  1. DataTable 中Distinct操作

    DataTable dt = ds.Tables[]; DataView dataView = dt.DefaultView; DataTable dtDistinct = dataView.ToTa ...

  2. BZOJ1029: [JSOI2007]建筑抢修(贪心)

    题目链接:BZOJ1029: [JSOI2007]建筑抢修 题解:贪心思想,按结束时间从小到大排序,选花费时间尽量短的建筑维修,用堆维护. #include<stdio.h> #inclu ...

  3. 第七章 企业项目开发--本地缓存guava cache

    1.在实际项目开发中,会使用到很多缓存技术,而且数据库的设计一般也会依赖于有缓存的情况下设计. 常用的缓存分两种:本地缓存和分布式缓存. 常用的本地缓存是guava cache,本章主要介绍guava ...

  4. JAVA-数据库连接【转】

    SqlServer.Oracle.MySQL的连接,除了地址和驱动包不同,其他都一样的. 1 public String urlString="jdbc:sqlserver://localh ...

  5. oracle 里面定时执行任务,比如存储过程内容等

    DECLARE   job_no_ NUMBER;   BEGIN      DBMS_JOB.SUBMIT(job_no_,                   'proc_qszx_dw_sc(' ...

  6. linux命令行快捷键

    linux命令行编辑快捷键 先总结几个个人觉得最有用的 ctrl + ? 撤消前一次输入 ctrl + c 另起一行 ctrl + r 输入单词搜索历史命令 ctrl + u 删除光标前面所有字符相当 ...

  7. 解决ACTIVITI流程图设置字体不生效的问题

    在ACTIVITI 5.15的版本中,有一个设置流程图的字体配置. 配置如下: <bean id="processEngineConfiguration" class=&qu ...

  8. AudioManager音频管理器

    AudioManager音频管理器提供了如下几种常用方法来控制手机音频: 1.adjustStreamVolume(int StreamType,int direction,int flgs):调整手 ...

  9. jsoup Cookbook(中文版)--爬虫(java)

    转载:http://www.open-open.com/jsoup/ 目录: 入门 解析和遍历一个html文档 输入 解析一个html字符串 解析一个body片断 根据一个url加载Document对 ...

  10. [ASP.NET] 使用Loading遮罩防止使用者重複點擊

    From: http://www.dotblogs.com.tw/joysdw12/archive/2012/12/13/85629.aspx 前言 在網頁執行中可能會因為資料量大或其他原因影響使用者 ...