zoukankan
html css js c++ java
C#加密解密方法
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;
}
}
}
}
来源:
http://blog.jobems.com/Article_21027.htm
查看全文
相关阅读:
腾讯2014年实习生招聘笔试面试经历
GitHub具体教程
Hadoop Hive与Hbase关系 整合
阿里中间件——消息中间件Notify和MetaQ
Android分享介绍
Python的包管理工具Pip
[ACM] POJ 1094 Sorting It All Out (拓扑排序)
机器学习实践指南:案例应用解析
android之照相、相冊裁剪功能的实现过程
组织:OASIS(结构化信息标准促进组织)
原文地址:https://www.cnblogs.com/yiki/p/872373.html
最新文章
怎样用Eclipse正确导入开源库AndroidStaggeredGrid
逻辑回归(logistic regression)
Tomcat全攻略
padding与margin的差别
Phalcon框架中的另类使用
Centos 5.5 安装Mysql5.5过程
AfxMessageBox和MessageBox差别
标准差(standard deviation)和标准误差(standard error)你能解释清楚吗?
POJ 2955 括号匹配,区间DP
毛诗摘录
热门文章
生活中的英语 —— 新词
生活中的英语 —— 新词
Python 奇葩语法
Python 奇葩语法
税与纳税
税与纳税
神奇的 37% 的概率
神奇的 37% 的概率
约数的计算
白话经典算法系列之六 高速排序 高速搞定
Copyright © 2011-2022 走看看