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. png-24在ie6中的几种透明方法

    转载 http://www.cnblogs.com/jikey/archive/2013/03/13/2957168.html 由于游戏类官网在页面背景和装饰人物的设计上追求画丽且与游戏风格想匹配,这 ...

  2. HTML5 视频规范简介

    HTML5 视频规范简介  创建于 2013-02-03, 周日 00:56  作者 白建鹏 HTML 一词是“超文本标记语言”(Hyper-Text Markup Language)的缩写,是用于描 ...

  3. Sumblime Text2安装Package Control两种方法+安装插件+注册码

    刚开始不认识sumblime的时候,就直接在网上下载了一个最新版的sumblime text3,只是在配合使用go语言时,出现了一些不为自己知道的奇葩问题,于是果断把3卸载了,改成了sumblime ...

  4. RRDTool 存储原理简介——基于时间序列的环型数据库

    转自:http://www.jianshu.com/p/b925b1584ab2 RRDTool是一套监测工具,可用于存储和展示被监测对象随时间的变化情况.比如,我们在 Windows 电脑上常见的内 ...

  5. 基于TCP协议的网络通信

    TCP/IP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信.Java对基于TC ...

  6. POJ 2159 Ancient Cipher 难度:0

    题目链接:http://poj.org/problem?id=2159 #include <cstring> #include <cstdio> #include <cc ...

  7. not use jquery

    document.getElementById('myElement');document.querySelector('#myElement'); document.getElementsByCla ...

  8. [vijos P1112] 小胖的奇偶

    第一次看到这题怎么也不会想到是并查集题目…星期五第一次看到这题,到今天做出来,实在是废了好多功夫.看了很多人的解题都有same和diff数组,我也写了,后来发现不对啊两个数组的话find函数怎么写呢? ...

  9. how to reset mac root password

    Reset 10.5 Leopard & 10.6 Snow Leopard password Power on or restart your Mac. At the chime (or g ...

  10. [流媒体]live555简介(转)

    live555简介 Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP.RTSP.SIP等的支持.Live555实现 了对多种音视频编码 ...