打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
加密方法
凯之风
>《加密》
2011.05.06
关注
/
名称空间
using
System;
using
System.Security.Cryptography;
using
System.IO;
using
System.Text;
//
方法
//
加密方法
public
string
Encrypt(
string
pToEncrypt,
string
sKey)
{
DESCryptoServiceProvider des
=
new
DESCryptoServiceProvider();
//
把字符串放到byte数组中
//
原来使用的UTF8编码,我改成Unicode编码了,不行
byte
[] inputByteArray
=
Encoding.Default.GetBytes(pToEncrypt);
//
byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);
//
建立加密对象的密钥和偏移量
//
原文使用ASCIIEncoding.ASCII方法的GetBytes方法
//
使得输入密码必须输入英文文本
des.Key
=
ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV
=
ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms
=
new
MemoryStream();
CryptoStream cs
=
new
CryptoStream(ms, des.CreateEncryptor(),CryptoStreamMode.Write);
//
Write the byte array into the crypto stream
//
(It will end up in the memory stream)
cs.Write(inputByteArray,
0
, inputByteArray.Length);
cs.FlushFinalBlock();
//
Get the data back from the memory stream, and into a string
StringBuilder ret
=
new
StringBuilder();
foreach
(
byte
b
in
ms.ToArray())
{
//
Format as hex
ret.AppendFormat(
"
{0:X2}
"
, b);
}
ret.ToString();
return
ret.ToString();
}
//
解密方法
public
string
Decrypt(
string
pToDecrypt,
string
sKey)
{
DESCryptoServiceProvider des
=
new
DESCryptoServiceProvider();
//
Put the input string into the byte array
byte
[] inputByteArray
=
new
byte
[pToDecrypt.Length
/
2
];
for
(
int
x
=
0
; x
<
pToDecrypt.Length
/
2
; x
++
)
{
int
i
=
(Convert.ToInt32(pToDecrypt.Substring(x
*
2
,
2
),
16
));
inputByteArray[x]
=
(
byte
)i;
}
//
建立加密对象的密钥和偏移量,此值重要,不能修改
des.Key
=
ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV
=
ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms
=
new
MemoryStream();
CryptoStream cs
=
new
CryptoStream(ms, des.CreateDecryptor(),CryptoStreamMode.Write);
//
Flush the data through the crypto stream into the memory stream
cs.Write(inputByteArray,
0
, inputByteArray.Length);
cs.FlushFinalBlock();
//
Get the decrypted data back from the memory stream
//
建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象
StringBuilder ret
=
new
StringBuilder();
return
System.Text.Encoding.Default.GetString(ms.ToArray());
}
来源:http://blog.csdn.net/keyu23/archive/2005/09/27/490577.aspx
using
System;
using
System.IO;
using
System.Text;
using
System.Security.Cryptography;
using
System.Web;
namespace
Test.Com
{
///
<summary>
///
DESEncryptor 的摘要说明。
///
</summary>
public
class
DESEncryptor
{
#region
私有成员
///
<summary>
///
输入字符串
///
</summary>
private
string
inputString
=
null
;
///
<summary>
///
输出字符串
///
</summary>
private
string
outString
=
null
;
///
<summary>
///
输入文件路径
///
</summary>
private
string
inputFilePath
=
null
;
///
<summary>
///
输出文件路径
///
</summary>
中国3S吧 3s8.cn
private
string
outFilePath
=
null
;
///
<summary>
///
加密密钥
///
</summary>
private
string
encryptKey
=
null
;
///
<summary>
///
解密密钥
///
</summary>
private
string
decryptKey
=
null
;
///
<summary>
///
提示信息
///
</summary>
private
string
noteMessage
=
null
;
#endregion
#region
公共属性
///
<summary>
///
输入字符串
///
</summary>
public
string
InputString
{
get
{
return
inputString;}
set
{inputString
=
value;}
}
///
<summary>
///
输出字符串
///
</summary>
public
string
OutString
{
get
{
return
outString;}
set
{outString
=
value;}
}
///
<summary>
///
输入文件路径
///
</summary>
public
string
InputFilePath
{
get
{
return
inputFilePath;}
set
{inputFilePath
=
value;}
}
///
<summary>
///
输出文件路径
///
</summary>
中国3S吧 3s8.cn
public
string
OutFilePath
{
get
{
return
outFilePath;}
set
{outFilePath
=
value;}
}
///
<summary>
///
加密密钥
///
</summary>
public
string
EncryptKey
{
get
{
return
encryptKey;}
set
{encryptKey
=
value;}
}
///
<summary>
///
解密密钥
///
</summary>
public
string
DecryptKey
{
get
{
return
decryptKey;}
set
{decryptKey
=
value;}
}
///
<summary>
///
错误信息
///
</summary>
public
string
NoteMessage
{
get
{
return
noteMessage;}
set
{noteMessage
=
value;}
}
#endregion
#region
构造函数
public
DESEncryptor()
{
//
//
TODO: 在此处添加构造函数逻辑
//
}
#endregion
#region
DES加密字符串
///
<summary>
///
加密字符串
///
注意:密钥必须为8位
///
</summary>
///
<param name="strText">
字符串
</param>
///
<param name="encryptKey">
密钥
</param>
中国3S吧 3s8.cn
public
void
DesEncrypt()
{
byte
[] byKey
=
null
;
byte
[] IV
=
{
0x12
,
0x34
,
0x56
,
0x78
,
0x90
,
0xAB
,
0xCD
,
0xEF
}
;
try
{
byKey
=
System.Text.Encoding.UTF8.GetBytes(
this
.encryptKey.Substring(
0
,
8
));
DESCryptoServiceProvider des
=
new
DESCryptoServiceProvider();
byte
[] inputByteArray
=
Encoding.UTF8.GetBytes(
this
.inputString);
MemoryStream ms
=
new
MemoryStream();
CryptoStream cs
=
new
CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write) ;
cs.Write(inputByteArray,
0
, inputByteArray.Length);
cs.FlushFinalBlock();
this
.outString
=
Convert.ToBase64String(ms.ToArray());
}
catch
(System.Exception error)
{
this
.noteMessage
=
error.Message;
}
}
#endregion
#region
DES解密字符串
///
<summary>
///
解密字符串
///
</summary>
///
<param name="this.inputString">
加了密的字符串
</param>
///
<param name="decryptKey">
密钥
</param>
public
void
DesDecrypt()
{
byte
[] byKey
=
null
;
byte
[] IV
=
{
0x12
,
0x34
,
0x56
,
0x78
,
0x90
,
0xAB
,
0xCD
,
0xEF
}
;
byte
[] inputByteArray
=
new
Byte[
this
.inputString.Length];
try
{
byKey
=
System.Text.Encoding.UTF8.GetBytes(decryptKey.Substring(
0
,
8
));
DESCryptoServiceProvider des
=
new
DESCryptoServiceProvider();
inputByteArray
=
Convert.FromBase64String(
this
.inputString);
MemoryStream ms
=
new
MemoryStream();
CryptoStream cs
=
new
CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);
cs.Write(inputByteArray,
0
, inputByteArray.Length);
cs.FlushFinalBlock();
System.Text.Encoding encoding
=
new
System.Text.UTF8Encoding();
this
.outString
=
encoding.GetString(ms.ToArray());
}
catch
(System.Exception error)
{
this
.noteMessage
=
error.Message;
}
}
#endregion
#region
DES加密文件
///
<summary>
///
DES加密文件
///
</summary>
///
<param name="this.inputFilePath">
源文件路径
</param>
///
<param name="this.outFilePath">
输出文件路径
</param>
///
<param name="encryptKey">
密钥
</param>
public
void
FileDesEncrypt()
{
byte
[] byKey
=
null
;
byte
[] IV
=
{
0x12
,
0x34
,
0x56
,
0x78
,
0x90
,
0xAB
,
0xCD
,
0xEF
}
;
try
{
byKey
=
System.Text.Encoding.UTF8.GetBytes(
this
.encryptKey.Substring(
0
,
8
));
FileStream fin
=
new
FileStream(
this
.inputFilePath, FileMode.Open, FileAccess.Read);
FileStream fout
=
new
FileStream(
this
.outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength(
0
);
//
Create variables to help with read and write.
byte
[] bin
=
new
byte
[
100
];
//
This is intermediate storage for the encryption.
long
rdlen
=
0
;
//
This is the total number of bytes written.
long
totlen
=
fin.Length;
//
This is the total length of the input file.
int
len;
//
This is the number of bytes to be written at a time.
DES des
=
new
DESCryptoServiceProvider();
CryptoStream encStream
=
new
CryptoStream(fout, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);
//
Read from the input file, then encrypt and write to the output file.
while
(rdlen
<
totlen)
{
len
=
fin.Read(bin,
0
,
100
);
encStream.Write(bin,
0
, len);
rdlen
=
rdlen
+
len;
}
中国3S吧 3s8.cn
encStream.Close();
fout.Close();
fin.Close(); 中国3S吧 3s8.cn
}
catch
(System.Exception error)
{
this
.noteMessage
=
error.Message.ToString();
}
}
#endregion
#region
DES解密文件
///
<summary>
///
解密文件
///
</summary>
///
<param name="this.inputFilePath">
加密了的文件路径
</param>
///
<param name="this.outFilePath">
输出文件路径
</param>
///
<param name="decryptKey">
密钥
</param>
public
void
FileDesDecrypt()
{
byte
[] byKey
=
null
;
byte
[] IV
=
{
0x12
,
0x34
,
0x56
,
0x78
,
0x90
,
0xAB
,
0xCD
,
0xEF
}
;
try
{
byKey
=
System.Text.Encoding.UTF8.GetBytes(decryptKey.Substring(
0
,
8
));
FileStream fin
=
new
FileStream(
this
.inputFilePath, FileMode.Open, FileAccess.Read);
FileStream fout
=
new
FileStream(
this
.outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength(
0
);
//
Create variables to help with read and write.
byte
[] bin
=
new
byte
[
100
];
//
This is intermediate storage for the encryption.
long
rdlen
=
0
;
//
This is the total number of bytes written.
long
totlen
=
fin.Length;
//
This is the total length of the input file.
int
len;
//
This is the number of bytes to be written at a time.
DES des
=
new
DESCryptoServiceProvider();
CryptoStream encStream
=
new
CryptoStream(fout, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);
//
Read from the input file, then encrypt and write to the output file.
while
(rdlen
<
totlen)
{
len
=
fin.Read(bin,
0
,
100
);
encStream.Write(bin,
0
, len);
rdlen
=
rdlen
+
len;
}
中国3S吧 3s8.cn
encStream.Close();
fout.Close();
fin.Close();
}
catch
(System.Exception error)
{
this
.noteMessage
=
error.Message.ToString();
}
}
#endregion
#region
MD5
///
<summary>
///
MD5 Encrypt
///
</summary>
///
<param name="strText">
text
</param>
///
<returns>
md5 Encrypt string
</returns>
public
void
MD5Encrypt()
{
MD5 md5
=
new
MD5CryptoServiceProvider();
byte
[] result
=
md5.ComputeHash(System.Text.Encoding.Default.GetBytes(
this
.inputString));
this
.outString
=
System.Text.Encoding.Default.GetString(result);
}
#endregion
}
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
DESC加密解密
一个.Net加密解密类-程序开发-红黑联盟
关于DES 过程密钥和密钥分散
C# MD5加密解密类 winform
asp.net URL参数加密解密的问题
C#的DES加密解密算法
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×