如何在c#中加密数据和解密数据的函数
2008-08-06 17:16
399 查看
首先要先实例化加解密库类 RSACryptoServiceProvider ,然后再用给定的密钥对他进行初始化,接着声明一个转换函数UTF8Encoding来把要加密的字符串转换成字节数组,接着就可以调用RSACryptoServiceProvider 的Encrypt方法进行加密了,加密返回的是字节组。解密函数的原理也是一样的。大家直接看下面的代码就清楚了,至于为什么要在把字符串加密后返回字节数组而不是字符串,那是因为利用加密函数进行加密时必须要先把字符串转换成字节数组,然后才能加密,加密完以后则不能把加密好的字节数组转换成字符串,否则当你解密时会出现问题的,不信的可以试一试,我觉得可能是当加密好以后的字节数组转换成字符串,再由字符串转换成字节数组进行解密时可能会出现字节错位引起的。有什么不妥的地方请大家指正。
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace FootBall
{
public class Function
{
/// <summary>
/// 加密函数
/// </summary>
/// <param name="originalData">originalData:原始数据</param>
/// <param name="key">key:密钥</param>
/// <returns>返回加密后的数据</returns>
public static byte[] encryption(String originalData, String key)
{
try
{
//声明加解密库函数
RSACryptoServiceProvider crypt = new RSACryptoServiceProvider();
//加载特定密钥初始化加解密函数
crypt.FromXmlString(key);
//声明编码装换函数
System.Text.UTF8Encoding enc = new UTF8Encoding();
//把字符串型的原始数据装换成字节型数组
byte[] bytes = enc.GetBytes(originalData);
//对转换成字节型数组的原始数据加密
bytes = crypt.Encrypt(bytes, false);
//把加密后的字节型数组返回
return bytes;
}
catch
{
//如果发生异常则返回空
return null;
}
}
/// <summary>
/// 解密函数
/// </summary>
/// <param name="encrypteData">encrypteData:加密数据</param>
/// <param name="key">key:密钥</param>
/// <returns>返回解密后的数据</returns>
public static String decryption(byte[] encrypteData, String key)
{
try
{
//声明加解密库函数
RSACryptoServiceProvider crypt = new RSACryptoServiceProvider();
//加载特定密钥初始化加解密函数
crypt.FromXmlString(key);
//对装换成字节型数组的加密数据解密
encrypteData = crypt.Decrypt(encrypteData, false);
//声明编码装换函数
System.Text.UTF8Encoding enc = new UTF8Encoding();
//把解密后的字节型数组转换成字符串后返回
return enc.GetString(encrypteData);
}
catch
{
//如果发生异常则返回空
return null;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace FootBall
{
public class Function
{
/// <summary>
/// 加密函数
/// </summary>
/// <param name="originalData">originalData:原始数据</param>
/// <param name="key">key:密钥</param>
/// <returns>返回加密后的数据</returns>
public static byte[] encryption(String originalData, String key)
{
try
{
//声明加解密库函数
RSACryptoServiceProvider crypt = new RSACryptoServiceProvider();
//加载特定密钥初始化加解密函数
crypt.FromXmlString(key);
//声明编码装换函数
System.Text.UTF8Encoding enc = new UTF8Encoding();
//把字符串型的原始数据装换成字节型数组
byte[] bytes = enc.GetBytes(originalData);
//对转换成字节型数组的原始数据加密
bytes = crypt.Encrypt(bytes, false);
//把加密后的字节型数组返回
return bytes;
}
catch
{
//如果发生异常则返回空
return null;
}
}
/// <summary>
/// 解密函数
/// </summary>
/// <param name="encrypteData">encrypteData:加密数据</param>
/// <param name="key">key:密钥</param>
/// <returns>返回解密后的数据</returns>
public static String decryption(byte[] encrypteData, String key)
{
try
{
//声明加解密库函数
RSACryptoServiceProvider crypt = new RSACryptoServiceProvider();
//加载特定密钥初始化加解密函数
crypt.FromXmlString(key);
//对装换成字节型数组的加密数据解密
encrypteData = crypt.Decrypt(encrypteData, false);
//声明编码装换函数
System.Text.UTF8Encoding enc = new UTF8Encoding();
//把解密后的字节型数组转换成字符串后返回
return enc.GetString(encrypteData);
}
catch
{
//如果发生异常则返回空
return null;
}
}
}
}
相关文章推荐
- SELECT INTO和INSERT INTO SELECT的区别 类似aaa?a=1&b=2&c=3&d=4,如何将问号以后的数据变为键值对 C# 获取一定区间的随即数 0、1两个值除随机数以外的取值方法(0、1两个值被取值的概率相等) C# MD5 加密,解密 C#中DataTable删除多条数据
- 在c#中加密数据和解密数据的函数
- Windows文件属性-高级-加密内容以便保护数据:EFS加密后如何 解密
- 安卓Shareprefrence实现记住密码自动登录以及保存在shareprefrence里面数据如何加密解密
- C# 中如何用 RSA 加密算法 API 来加密和解密
- 如何使用Bouncy Castle Crypto API来加密和解密数据
- 【转】用 Java 解密 C# 加密的数据(DES)
- C# 加密、解密函数
- 如何加密解密DataSet数据集
- C# 数据的加密解密
- 如何使用C#加密解密XML文档
- PHP对称加密函数实现数据的加密解密
- DES的两个简单的加密、解密函数(C#中使用)
- 同时兼容JS和C#的RSA加密解密算法详解(对web提交的数据加密传输)
- c# 如何利用异或运算进行简单加密解密
- C#实现AES加密和解密函数
- 用 Java 解密 C# 加密的数据(DES)
- HElib 库如何使用?加密解密数据
- C#中利用DPAPI加密解密数据
- 兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输