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. $(":input").each()和$.each()的区别

    <body>    <form action="strutsAction" method="get">        <input ...

  2. 分批次从musql取数据,每次取1000条

    $t = new Gettags(); $num=$t->sum_tag(); $num=$num/1000; $flag_num=ceil($num); $flag_array=array() ...

  3. Phonegap hello world 不容易啊~!

    今天一个项目要用phonegap,当初就是觉得phonegap配置太tmd的麻烦了,所以转头appcan,但今天项目必须用-- 先是看到官方说用nodejs装,tmd的,总是重复同一个错误,安装不起, ...

  4. dancing link模板

    #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #i ...

  5. python 字典排序 关于sort()、reversed()、sorted()

    一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...

  6. 【C语言学习】-03 循环结构

    本文目录 循环结构的特点 while循环 do...while循环 for循环 回到顶部 一.循环结构的特点 程序的三种结构: 顺序结构:顺序执行语句 分支结构:通过进行一个判断在两个可选的语句序列之 ...

  7. hdu 1031 (partial sort problem, nth_element, stable_partition, lambda expression) 分类: hdoj 2015-06-15 17:47 26人阅读 评论(0) 收藏

    partial sort. first use std::nth_element to find pivot, then use std::stable_partition with the pivo ...

  8. Cisco IOS debug command reference Command A through D

    debug aaa accounting through debug auto-config debug aaa accounting : to display information on acco ...

  9. sql左连接,右连接,内连接

    1.sql查询时什么叫左连接和右连接    左连接和右连接都是外部连接,也就是区别于内部连接,它对不满足连接条件的行并不是象内部连接一样将数据完全过滤掉,而是保留一部分数据,行数不会减少.    左或 ...

  10. IOS开发中--点击imageView上的Button没有任何反应

    点击imageView上的Button没有任何反应:    解决方法:设置图片的userInteractionEnabled为YES,使该imageView可以与用户进行交互