1
、方法一 (不可逆加密)
public
string
EncryptPassword(
string
PasswordString,
string
PasswordFormat )
{
string
encryptPassword
=
null
;
if
(PasswordFormat
=
"
SHA1
"
)
{
encryptPassword
=
FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString
,
"
SHA1
"
);
}
elseif (PasswordFormat
=
"
MD5
"
)
{ encryptPassword
=
FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString
,
"
MD5
"
);
}
return
encryptPassword ;
}
2
、方法二 (可逆加密)
public
interface
IBindesh
{
string
encode(
string
str);
string
decode(
string
str);
}
public
class
EncryptionDecryption : IBindesh
{
public
string
encode(
string
str)
{
string
htext
=
""
;
for
(
int
i
=
0
; i
<
str.Length; i
++
)
{
htext
=
htext
+
(
char
) (str[i]
+
10
-
1
*
2
);
}
return
htext;
}
public
string
decode(
string
str)
{
string
dtext
=
""
;
for
(
int
i
=
0
; i
<
str.Length; i
++
)
{
dtext
=
dtext
+
(
char
) (str[i]
-
10
+
1
*
2
);
}
return
dtext;
}
3
、方法三 (可逆加密)
const
string
KEY_64
=
"
VavicApp
"
;
//
注意了,是8個字符,64位
const
string
IV_64
=
"
VavicApp
"
;
public
string
Encode(
string
data)
{
byte
[] byKey
=
System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte
[] byIV
=
System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
DESCryptoServiceProvider cryptoProvider
=
new
DESCryptoServiceProvider();
int
i
=
cryptoProvider.KeySize;
MemoryStream ms
=
new
MemoryStream();
CryptoStream cst
=
new
CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey,
byIV), CryptoStreamMode.Write);
StreamWriter sw
=
new
StreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return
Convert.ToBase64String(ms.GetBuffer(),
0
, (
int
)ms.Length);
}
public
string
Decode(
string
data)
{
byte
[] byKey
=
System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte
[] byIV
=
System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
byte
[] byEnc;
try
{
byEnc
=
Convert.FromBase64String(data);
}
catch
{
return
null
;
}
DESCryptoServiceProvider cryptoProvider
=
new
DESCryptoServiceProvider();
MemoryStream ms
=
new
MemoryStream(byEnc);
CryptoStream cst
=
new
CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey,
byIV), CryptoStreamMode.Read);
StreamReader sr
=
new
StreamReader(cst);
return
sr.ReadToEnd();
}
4
、MD5不可逆加密
(32位加密)
public
string
GetMD5(
string
s,
string
_input_charset)
{
/**/
///
<summary>
///
與ASP兼容的MD5加密算法
///
</summary>
MD5 md5
=
new
MD5CryptoServiceProvider();
byte
[] t
=
md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(s));
StringBuilder sb
=
new
StringBuilder(
32
);
for
(
int
i
=
0
; i
<
t.Length; i
++
)
{
sb.Append(t[i].ToString(
"
x
"
).PadLeft(
2
, '
0
'));
}
return
sb.ToString();
}
(16位加密)
public
static
string
GetMd5Str(
string
ConvertString)
{
MD5CryptoServiceProvider md5
=
new
MD5CryptoServiceProvider();
string
t2
=
BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)),
4
,
8
);
t2
=
t2.Replace(
"
-
"
,
""
);
return
t2;
}
5
、加解文本文件
//
加密文件
private
static
void
EncryptData(String inName, String outName,
byte
[] desKey,
byte
[]
desIV)
{
//
Create the file streams to handle the input and output files.
FileStream fin
=
new
FileStream(inName, FileMode.Open, FileAccess.Read);
FileStream fout
=
new
FileStream(outName, 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(desKey, desIV),
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;
}
encStream.Close();
fout.Close();
fin.Close();
}
//
解密文件
private
static
void
DecryptData(String inName, String outName,
byte
[] desKey,
byte
[]
desIV)
{
//
Create the file streams to handle the input and output files.
FileStream fin
=
new
FileStream(inName, FileMode.Open, FileAccess.Read);
FileStream fout
=
new
FileStream(outName, 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(desKey, desIV),
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;
}
encStream.Close();
fout.Close();
fin.Close();
}
6
、
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Security.Cryptography;
using
System.IO;
namespace
Component
{
public
class
Security
{
public
Security()
{
}
//
默認密鑰向量
private
static
byte
[] Keys
=
{
0x12
,
0x34
,
0x56
,
0x78
,
0x90
,
0xAB
,
0xCD
,
0xEF
}
;
/**/
/**/
/**/
///
<summary>
///
DES加密字符串
///
</summary>
///
<param name="encryptString">
待加密的字符串
</param>
///
<param name="encryptKey">
加密密鑰,要求爲8位
</param>
///
<returns>
加密成功返回加密後的字符串,失敗返回源串
</returns>
public
static
string
EncryptDES(
string
encryptString,
string
encryptKey)
{
try
{
byte
[] rgbKey
=
Encoding.UTF8.GetBytes(encryptKey.Substring(
0
,
8
));
byte
[] rgbIV
=
Keys;
byte
[] inputByteArray
=
Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP
=
new
DESCryptoServiceProvider();
MemoryStream mStream
=
new
MemoryStream();
CryptoStream cStream
=
new
CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey,
rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray,
0
, inputByteArray.Length);
cStream.FlushFinalBlock();
return
Convert.ToBase64String(mStream.ToArray());
}
catch
{
return
encryptString;
}
}
/**/
/**/
/**/
///
<summary>
///
DES解密字符串
///
</summary>
///
<param name="decryptString">
待解密的字符串
</param>
///
<param name="decryptKey">
解密密鑰,要求爲8位,和加密密鑰相同
</param>
///
<returns>
解密成功返回解密後的字符串,失敗返源串
</returns>
public
static
string
DecryptDES(
string
decryptString,
string
decryptKey)
{
try
{
byte
[] rgbKey
=
Encoding.UTF8.GetBytes(decryptKey);
byte
[] rgbIV
=
Keys;
byte
[] inputByteArray
=
Convert.FromBase64String(decryptString);
DESCryptoServiceProvider DCSP
=
new
DESCryptoServiceProvider();
MemoryStream mStream
=
new
MemoryStream();
CryptoStream cStream
=
new
CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey,
rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray,
0
, inputByteArray.Length);
cStream.FlushFinalBlock();
return
Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
return
decryptString;
}
}
}
}
C# 加密解密算法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.