zoukankan
html css js c++ java
DES文件加密
using
System;
using
System.IO;
using
System.Security;
using
System.Security.Cryptography;
using
System.Runtime.InteropServices;
using
System.Text;
/**/
///
<summary>
///
FileEncryptDecrypt 的摘要说明
///
</summary>
public
class
FileEncryptDecrypt
{
byte
[] desIV
=
{
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
}
;
byte
[] desKey
=
{ }
;
public
FileEncryptDecrypt()
{
//
//
TODO: 在此处添加构造函数逻辑
//
}
public
void
getKey(
string
keyString)
{
//
根据密码算出密钥
if
(keyString.Length
>=
8
)
{
desKey
=
new
byte
[]
{(
byte
)keyString[
0
],(
byte
)keyString[
1
],(
byte
)keyString[
2
],
(
byte
)keyString[
3
],(
byte
)keyString[
4
],(
byte
)keyString[
5
],
(
byte
)keyString[
6
],(
byte
)keyString[
7
]}
;
}
if
(keyString.Length
==
6
)
{
desKey
=
new
byte
[]
{(
byte
)keyString[
0
],(
byte
)keyString[
1
],(
byte
)keyString[
2
],
(
byte
)keyString[
3
],(
byte
)keyString[
4
],(
byte
)keyString[
5
],
0x07
,
0x08
}
;
}
if
(keyString.Length
==
7
)
{
desKey
=
new
byte
[]
{(
byte
)keyString[
0
],(
byte
)keyString[
1
],(
byte
)keyString[
2
],
(
byte
)keyString[
3
],(
byte
)keyString[
4
],(
byte
)keyString[
5
],
(
byte
)keyString[
6
],
0x07
}
;
}
}
public
void
DecryptFile(
string
inName,
string
outName)
{
try
{
//
创建文件流分别指向输入和输出文件
FileStream fin
=
new
FileStream(inName, FileMode.Open, FileAccess.Read);
FileStream fout
=
new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength(
0
);
//
每次的中间流.
byte
[] bin
=
new
byte
[
100
];
//
代表已经解密的流的大小
int
complete
=
0
;
//
代表要解密文件总的大小
long
totlen
=
fin.Length;
//
每次写入的大小
int
len;
//
创建DES对象
DES des
=
new
DESCryptoServiceProvider();
//
创建解密流
CryptoStream decStream
=
new
CryptoStream(fout, des.CreateDecryptor(desKey, desIV), CryptoStreamMode.Write);
//
从输入文件中读取流,然后解密到输出文件中
while
(complete
<
totlen)
{
len
=
fin.Read(bin,
0
,
100
);
decStream.Write(bin,
0
, len);
complete
=
complete
+
len;
}
//
关闭流
decStream.Close();
fout.Close();
fin.Close();
}
catch
(Exception error)
{
//
密码不正确的警告
throw
error;
}
}
public
void
EncryptFile(
string
inName,
string
outName)
{
//
创建文件流分别指向输入和输出文件
FileStream fin
=
new
FileStream(inName, FileMode.Open, FileAccess.Read);
FileStream fout
=
new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength(
0
);
//
每次的中间流.
byte
[] bin
=
new
byte
[
100
];
//
代表已经加密的流的大小
int
complete
=
0
;
//
代表要加密文件总的大小
long
totlen
=
fin.Length;
//
每次写入的大小
int
len;
//
创建DES对象
DES des
=
new
DESCryptoServiceProvider();
//
创建加密流
CryptoStream encStream
=
new
CryptoStream(fout, des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write);
//
从输入文件中读取流,然后加密到输出文件中
while
(complete
<
totlen)
{
len
=
fin.Read(bin,
0
,
100
);
encStream.Write(bin,
0
, len);
complete
=
complete
+
len;
}
//
关闭流
encStream.Close();
fout.Close();
fin.Close();
}
}
查看全文
相关阅读:
windows下快速启动或关闭系统服务方法
java学习-struts基础(一)
android学习-Adapter适配器进阶
java学习-GET方式抓取网页(UrlConnection和HttpClient)
搜索技术的历史
android学习-数据存储(一)-----SQLite源码分析
Python+Tkinter 抽奖小程序
随机生成激活码
爬虫9:Scrapy-获取steam网站前50页游戏的url
爬虫8:Scrapy-取内容
原文地址:https://www.cnblogs.com/skyakira/p/965357.html
最新文章
Linux下solr集群搭建
欧拉函数
Educational Codeforces Round 81 (Rated for Div. 2)
2020 wannafly camp 补题 day1
一元三次方程 double输出 -0.00
Codeforces Round #605 (Div. 3)
2019-2020Nowcoder Girl初赛 题解
Educational Codeforces Round 77 (Rated for Div. 2) C. Infinite Fence
B. Silly Mistake Codeforces Round #600 (Div. 2)
F. Multicolored Markers 暴力+二分
热门文章
树的最小支配集 E
eclipse中explorer显示方式
数据库学习---SQL基础(二)
数据库学习---SQL基础(一)
冒泡排序算法
数据库--oracle图形化管理工具和新增自定义用户
数据库--oracle安装配置(本地安装的步骤及各种问题解决方案)
软件开发模型
实习一个月后的第一篇日记(二)
实习一个月后的第一篇日记(一)
Copyright © 2011-2022 走看看