加密解密帮助类(对称加密)

 1   // 对称加密帮助类
 2     public static class CryptoHelper
 3     {
 4         //详细参考http://www.cnblogs.com/JimmyZhang/archive/2008/10/02/Cryptograph.html
 5         private static ICryptoTransform encryptor;     // 加密器对象
 6         private static ICryptoTransform decryptor;     // 解密器对象
 7
 8         private static SymmetricAlgorithm provider = SymmetricAlgorithm.Create("TripleDES");
 9
10         private const int BufferSize = 1024;
11
12
13         /// <summary>
14         /// 加密算法
15         /// </summary>
16         /// <param name="key">为24或16位字符</param>
17         /// <param name="encryptText">被加密的字符串</param>
18         /// <returns></returns>
19         public static string Encrypt(string key, string encryptedText)
20         {
21             provider.IV = new byte[] { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
22             provider.Key = Encoding.UTF8.GetBytes(key);
23
24             encryptor = provider.CreateEncryptor();
25             // 创建明文流
26             byte[] clearBuffer = Encoding.UTF8.GetBytes(encryptedText);
27             MemoryStream clearStream = new MemoryStream(clearBuffer);
28
29             // 创建空的密文流
30             MemoryStream encryptedStream = new MemoryStream();
31
32             CryptoStream cryptoStream =
33                 new CryptoStream(encryptedStream, encryptor, CryptoStreamMode.Write);
34
35             // 将明文流写入到buffer中
36             // 将buffer中的数据写入到cryptoStream中
37             int bytesRead = 0;
38             byte[] buffer = new byte[BufferSize];
39             do
40             {
41                 bytesRead = clearStream.Read(buffer, 0, BufferSize);
42                 cryptoStream.Write(buffer, 0, bytesRead);
43             } while (bytesRead > 0);
44
45             cryptoStream.FlushFinalBlock();
46
47             // 获取加密后的文本
48             buffer = encryptedStream.ToArray();
49             string str = Convert.ToBase64String(buffer);
50             return str;
51         }
52
53         // 解密算法
54         /// <summary>
55         /// </summary>
56         /// <param name="key">为24或16位字符</param>
57         /// <param name="decryptedText">被解密的字符串</param>
58         /// <returns></returns>
59         public static string Decrypt(string key, string decryptedText)
60         {
61             provider.IV = new byte[] { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
62             provider.Key = Encoding.UTF8.GetBytes(key);
63
64             decryptor = provider.CreateDecryptor();
65             byte[] encryptedBuffer = Convert.FromBase64String(decryptedText);
66             Stream encryptedStream = new MemoryStream(encryptedBuffer);
67
68             MemoryStream clearStream = new MemoryStream();
69             CryptoStream cryptoStream =
70                 new CryptoStream(encryptedStream, decryptor, CryptoStreamMode.Read);
71
72             int bytesRead = 0;
73             byte[] buffer = new byte[BufferSize];
74
75             do
76             {
77                 bytesRead = cryptoStream.Read(buffer, 0, BufferSize);
78                 clearStream.Write(buffer, 0, bytesRead);
79             } while (bytesRead > 0);
80
81             buffer = clearStream.GetBuffer();
82             string str =
83                 Encoding.UTF8.GetString(buffer, 0, (int)clearStream.Length);
84
85             return str;
86         }
87
88     }
时间: 2024-10-24 20:27:17

加密解密帮助类(对称加密)的相关文章

AES加密解密 助手类 CBC加密模式

string str = "2018"; string result1 = AESHelper.AesEncrypt(str); string result2 = AESHelper.AesDecrypt(result1); namespace Demo { /// <summary> /// AES加密解密 助手类 /// CBC加密模式 /// </summary> public class AESHelper { /// <summary> /

Discuz论坛写出的php加密解密处理类(代码+使用方法)

PHP加密解密也是常有的事,最近在弄相关的东西,发现discuz论坛里的PHP加密解密处理类代码,感觉挺不错,在用的时候,要参考Discuz论坛的passport相关函数,后面我会附上使用方法,先把类代码帖上来: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 <?php /*

DES加密解密帮助类

public class DESCrypto { /// <summary> /// 初始化des实例秘钥及向量 /// </summary> /// <param name="key"></param> /// <returns></returns> private static DESCryptoServiceProvider InitDESInstance(string key) { DESCryptoSer

php加密解密功能类

这两天突发奇想想要用php写一个对日常项目加密以及解密的功能,经过努力简单的封装了一个对php代码进行加密解密的类,一些思想也是来自于网络,初步测试用着还行,可以实现对指定项目的加密以及解密(只针对本类中加密的解密)过程,在这里分享给大家,水平比较有限那里有错误还希望指出,共同提高,一下会给大家列出来实现的思想以及源码. 加密过程:读取源文件,base64_encode进行加密,利用混排得到的52个大小写字母作为秘钥进行替换$c=strtr(密文,对应待替换的字母,要替换成的字母);将两个秘钥和

加密解密工具类(Java,DES)

一个Java版的DES加密工具类,可以用来进行网络数据传输加密,保存密码的时候进行加密. import java.security.Key; import java.security.spec.AlgorithmParameterSpec; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.I

php加密解密处理类

[PHP]代码 <?php /*=========================================================== = 版权协议: = GPL (The GNU GENERAL PUBLIC LICENSE Version 2, June 1991) =------------------------------------------------------------ = 文件名称:cls.sys_crypt.php = 摘 要:php加密解密处理类 =

PHP和.NET通用的加密解密函数类,均使用3DES加解密 .

以下为php代码 <PRE class=PHP name="code"> </PRE><PRE class=PHP name="code">PHP加解密函数:</PRE><PRE class=PHP name="code"> </PRE><PRE class=PHP name="code"> function encrypt($string)

php中des加密解密&#160;匹配C#des加密解密&#160;对称加密

原文:php中des加密解密 匹配C#des加密解密 对称加密 网上找来的 php des加密解密 完全匹配上一篇C# 字符串加密解密函数  可以用于C#和php通信 对数据进行加密,其中$key 是加密密钥,$iv 是偏移量,默认偏移量和加密密匙是一样的, <?php class DES { var $key; var $iv; //偏移量 function DES( $key, $iv=0) { //key长度8例如:1234abcd $this->key = $key; if( $iv

MD5加密解密帮助类

using System; using System.Security.Cryptography; using System.Text; namespace Maticsoft.DBUtility { /// <summary> /// DES加密/解密类. /// </summary> public class DESEncrypt { public DESEncrypt() { } #region ========加密======== /// <summary> /

各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)

普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语言时这类可逆函数非常难搞定.所以这时尽量使用AES DES RC4 Rabbit TripleDes这些方法. 包含超时的加密解密函数 1 /** 2 * 加密 3 * @param string $string 要加密或解密的字符串 4 * @param string $operation 加密 '' 解密 DECODE 5 * @param string $key 密钥