常用的加密解密(DES,RSA)
2010-06-22 21:28
507 查看
using System.Security.Cryptography;
using System.Text;
/// <summary>
/// DES加密
/// </summary>
/// <param name="input">待加密的字符串</param>
/// <param name="key">加密密钥</param>
/// <returns></returns>
public static string Encrypt(string EncryptString, byte[] Key, byte[] IV)
{
//byte[] rgbKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
byte[] inputByteArray = Encoding.UTF8.GetBytes(EncryptString);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, des.CreateEncryptor(Key, IV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
/// <summary>
/// DES解密
/// </summary>
/// <param name="input">待解密的字符串</param>
/// <param name="key">解密密钥,要求为8位,和加密密钥相同</param>
/// <returns>解密成功返回解密后的字符串,失败返源串</returns>
public static string Decrypt(string DecryptString, byte[] Key, byte[] IV)
{
try
{
//byte[] rgbKey = Encoding.UTF8.GetBytes(Key);
byte[] inputByteArray = Convert.FromBase64String(DecryptString);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, des.CreateDecryptor(Key, IV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
return "";
}
}
}
/// <summary>
/// RSA加解密算法
/// </summary>
public class RSA
{
/// <summary>
/// RSA加密函数
/// </summary>
/// <param name="xmlPublicKey">说明KEY必须是XML的行式,返回的是字符串</param>
/// <param name="EncryptString"></param>
/// <returns></returns>
public string Encrypt(string xmlPublicKey, string EncryptString)
{
byte[] PlainTextBArray;
byte[] CypherTextBArray;
string Result;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(xmlPublicKey);
PlainTextBArray = (new UnicodeEncoding()).GetBytes(EncryptString);
CypherTextBArray = rsa.Encrypt(PlainTextBArray, false);
Result = Convert.ToBase64String(CypherTextBArray);
return Result;
}
/// <summary>
/// RSA解密函数
/// </summary>
/// <param name="xmlPrivateKey"></param>
/// <param name="DecryptString"></param>
/// <returns></returns>
public string Decrypt(string xmlPrivateKey, string DecryptString)
{
byte[] PlainTextBArray;
byte[] DypherTextBArray;
string Result;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(xmlPrivateKey);
PlainTextBArray = Convert.FromBase64String(DecryptString);
DypherTextBArray = rsa.Decrypt(PlainTextBArray, false);
Result = (new UnicodeEncoding()).GetString(DypherTextBArray);
return Result;
}
/// <summary>
/// 产生RSA的密钥
/// </summary>
/// <param name="xmlKeys">私钥</param>
/// <param name="xmlPublicKey">公钥</param>
public void RSAKey(out string xmlKeys, out string xmlPublicKey)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
xmlKeys = rsa.ToXmlString(true);
xmlPublicKey = rsa.ToXmlString(false);
}
using System.Text;
/// <summary>
/// DES加密
/// </summary>
/// <param name="input">待加密的字符串</param>
/// <param name="key">加密密钥</param>
/// <returns></returns>
public static string Encrypt(string EncryptString, byte[] Key, byte[] IV)
{
//byte[] rgbKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
byte[] inputByteArray = Encoding.UTF8.GetBytes(EncryptString);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, des.CreateEncryptor(Key, IV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
/// <summary>
/// DES解密
/// </summary>
/// <param name="input">待解密的字符串</param>
/// <param name="key">解密密钥,要求为8位,和加密密钥相同</param>
/// <returns>解密成功返回解密后的字符串,失败返源串</returns>
public static string Decrypt(string DecryptString, byte[] Key, byte[] IV)
{
try
{
//byte[] rgbKey = Encoding.UTF8.GetBytes(Key);
byte[] inputByteArray = Convert.FromBase64String(DecryptString);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, des.CreateDecryptor(Key, IV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
return "";
}
}
}
/// <summary>
/// RSA加解密算法
/// </summary>
public class RSA
{
/// <summary>
/// RSA加密函数
/// </summary>
/// <param name="xmlPublicKey">说明KEY必须是XML的行式,返回的是字符串</param>
/// <param name="EncryptString"></param>
/// <returns></returns>
public string Encrypt(string xmlPublicKey, string EncryptString)
{
byte[] PlainTextBArray;
byte[] CypherTextBArray;
string Result;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(xmlPublicKey);
PlainTextBArray = (new UnicodeEncoding()).GetBytes(EncryptString);
CypherTextBArray = rsa.Encrypt(PlainTextBArray, false);
Result = Convert.ToBase64String(CypherTextBArray);
return Result;
}
/// <summary>
/// RSA解密函数
/// </summary>
/// <param name="xmlPrivateKey"></param>
/// <param name="DecryptString"></param>
/// <returns></returns>
public string Decrypt(string xmlPrivateKey, string DecryptString)
{
byte[] PlainTextBArray;
byte[] DypherTextBArray;
string Result;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(xmlPrivateKey);
PlainTextBArray = Convert.FromBase64String(DecryptString);
DypherTextBArray = rsa.Decrypt(PlainTextBArray, false);
Result = (new UnicodeEncoding()).GetString(DypherTextBArray);
return Result;
}
/// <summary>
/// 产生RSA的密钥
/// </summary>
/// <param name="xmlKeys">私钥</param>
/// <param name="xmlPublicKey">公钥</param>
public void RSAKey(out string xmlKeys, out string xmlPublicKey)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
xmlKeys = rsa.ToXmlString(true);
xmlPublicKey = rsa.ToXmlString(false);
}
相关文章推荐
- 常用加密解密算法【RSA、AES、DES、MD5】介绍和使用
- DES、RSA(分段加解密) Android中常用的两种加密方式
- 常用加密解密算法【RSA、AES、DES、MD5】介绍和使用
- 常用的加密解密(DES,RSA)
- 常用加密解密算法【RSA、AES、DES、MD5】介绍和使用
- Java加密解密快速入门【包括MD5、BASE64、DES、RSA等算法】
- (转)DES、RSA、MD5、SHA、随机生成加密与解密
- Java加密解密快速入门上篇【包括MD5、BASE64、DES、RSA等算法】
- 常用加解密工具类(MD5、SHA、DES、AES、RSA)
- 常用加解密工具类(MD5、SHA、DES、AES、RSA)
- as3 crypto 加密解密des,rsa
- 一个加密解密的小工具及源码(MD5, DES, RSA)
- DES、RSA、MD5、SHA、随机生成加密与解密
- 加密 解密 RSA & AES & DES
- Java加密解密快速入门下篇【包括MD5、BASE64、DES、RSA等算法】
- DES、AES、RSA加密解密
- c#加密解密源码,md5、des、rsa
- C/C++使用openssl进行摘要和加密解密(md5, sha256, des, rsa)
- 【JAVA】常用加解密算法总结及JAVA实现【BASE64,MD5,SHA,DES,3DES,AES,RSA】
- Java加密/解密算法快速入门下篇[包括MD5、BASE64、DES、RSA等]