(亿众国际-008)[原创]利用dotnet密码系统保证数据安全
/////////////////////////////////////////////////////////////
//author: stardicky //
//e-mail: stardicky@hotmail.com //
//qqnumber: 9531511 //
//companyname: ezone international //
//class: hbs-0308 //
//title: 利用dotnet密码系统保证数据安全 //
/////////////////////////////////////////////////////////////
//注:利用dotnet密码系统之一的des对称加密算法保证数据安全 //
/////////////////////////////////////////////////////////////
using system;
using system.io;
using system.text;
using system.security.cryptography;
namespace ezoneinternationalsecuritycryptography
{
class ezonesecuritycryptographydemo
{
[stathread]
public static void main(string[] args)
{
//加密数据(从内存到文件)
ezoneencryptordemo();
//解密数据(从文件到内存)
ezonedecryptordemo();
}
/// <summary>
/// 加密
/// </summary>
public static void ezoneencryptordemo()
{
//创建一个文件对象,文件的模式是创建新文件,文件的访问权限是可写!
filestream fs=new filestream("ezonedemo.txt",filemode.create,fileaccess.write);
console.writeline("请输入你想要进行加密的字符串:");
//输入你想要进行加密的字符串
string yourinput=console.readline();
//将字符串转换成字节
byte[] yourinputstorage=system.text.encoding.utf8.getbytes(yourinput);
//创建一个des算法的加密类
descryptoserviceprovider myserviceprovider=new descryptoserviceprovider();
//从des算法的加密类对象的createencryptor方法,创建一个加密转换接口对象
//第一个参数的含义是:对称算法的机密密钥(长度为64位,也就是8个字节)
// 可以人工输入,也可以随机生成方法是:myserviceprovider.generatekey();
//第二个参数的含义是:对称算法的初始化向量(长度为64位,也就是8个字节)
// 可以人工输入,也可以随机生成方法是:myserviceprovider.generateiv();
icryptotransform mytransform=myserviceprovider.createencryptor(new byte[]{100,110,120,130,100,110,120,130},new byte[]{100,110,120,130,100,110,120,130});
//cryptostream对象的作用是将数据流连接到加密转换的流
cryptostream mycryptostream=new cryptostream(fs,mytransform,cryptostreammode.write);
//将字节数组中的数据写入到加密流中
mycryptostream.write(yourinputstorage,0,yourinputstorage.length);
//关闭加密流对象
mycryptostream.close();
}
/// <summary>
/// 解密
/// </summary>
public static void ezonedecryptordemo()
{
filestream fs=new filestream("ezonedemo.txt",filemode.open,fileaccess.read);
descryptoserviceprovider myserviceprovider=new descryptoserviceprovider();
//从des算法的加密类对象的createencryptor方法,创建一个解密转换接口对象
//[对称算法的机密密钥]必须是加密时候的[对称算法的机密密钥]
//[对称算法的初始化向量]必须是加密时候的[对称算法的初始化向量]
//如果不一样,则会抛出一个异常。
icryptotransform mytransform=myserviceprovider.createdecryptor(new byte[]{100,110,120,130,100,110,120,130},new byte[]{100,110,120,130,100,110,120,130});
cryptostream mycryptostream=new cryptostream(fs,mytransform,cryptostreammode.read);
byte[] yourinputstorage=new byte[1000];
int len=mycryptostream.read(yourinputstorage,0,yourinputstorage.length);
console.writeline("你刚才输入的字符串是:");
console.writeline(system.text.encoding.utf8.getstring(yourinputstorage,0,len));
}
}
}