如何在c#中加密数据和解密数据的函数
来源:互联网 发布:天赋异禀美剧 知乎 编辑:程序博客网 时间:2024/05/16 18:37
首先要先实例化加解密库类 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;
}
}
}
}
- 如何在c#中加密数据和解密数据的函数
- 数据的加密和解密
- C#中利用DPAPI加密解密数据
- 数据加密和解密
- 数据加密和解密
- 数据加密和解密
- 数据加密和解密
- C#数据加密与解密
- C#加密与解密数据
- QTP-数据的加密和解密
- .NET中加密和解密---加密网络数据
- C#中加密和解密
- 用 Java 解密 C# 加密的数据(DES)
- 数据的加密与解密
- PHP的数据加密解密
- VC实现数据的加密和解密(MD5加密/DES/RSA加密解密)
- 数据加密解密(涉及到md5加密和des的加密解密)
- 如何在AIR中加密本地数据
- 在linux下面安装gcc
- asp.net get set用法
- 利用IPC通道进行进程间通信(C#)
- 面向对象(1)-虚方法与抽象方法
- 北京形象宣传片开幕式前滚动播出(组图)
- 如何在c#中加密数据和解密数据的函数
- Eclipse快捷键大全
- String Table中IDR_MAINFRAME字符串资源中各子串的含义
- Linux下关闭指定的端口
- linux下面安装vsftpd
- UNIX环境高级编程读书笔记(二)—目录和文件 (2)
- 使用TreeView绑定SQL数据源
- 对美国做法"以牙还牙" 俄开始恢复在古军事存在
- BDE, dbGo, dbExpress的抉擇