您的位置:首页 > 其它

加密解密

2009-06-05 11:42 211 查看
开发中需要一个加密解密的双向过程

MD5等Hash类型的单向加密不能符合使用的要求

所以自己写了一个类,当然还是调用 System.Security.Cryptography的方法

DESCryptoServiceProvider

加密过程

通过GetKey()、GetIV()方法产生和密钥key、随机变量IV

解密过程

用key、IV作为参数 通过SetKey()、SetIV()给Sercurity类的Key和IV负值

key、IV都是byte[]

遇到的问题:string-〉byte[]的转化

解决: Convert.FromBase64String(string s) 返回byte[]

1



using
System;

2



using
System.IO;

3



using
System.Text;

4



using
System.Security.Cryptography;

5



6



namespace
mySecurity

7







{

8





/**/
///

<summary>

9



///
MySecurity 的摘要说明。

10



///

</summary>

11



public

class
Security

12







{

13



private
SymmetricAlgorithm mCSP
=

new
DESCryptoServiceProvider();

14



15



//
private SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();

16



17





/**/
///

<summary>

18



///
加密

19



///

</summary>

20



///

<param name="Value"></param>

21



///

<returns></returns>

22



public

string
EncryptString(
string
Value)

23







{

24



ICryptoTransform ct;

25



MemoryStream ms;

26



CryptoStream cs;

27



byte
[] byt;

28



29



ct
=
mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);

30



31



byt
=
Encoding.UTF8.GetBytes(Value);

32



33



ms
=

new
MemoryStream();

34



cs
=

new
CryptoStream(ms, ct, CryptoStreamMode.Write);

35



cs.Write(byt,
0
, byt.Length);

36



cs.FlushFinalBlock();

37



38



cs.Close();

39



40



return
Convert.ToBase64String(ms.ToArray());

41



}

42



43





/**/
///

<summary>

44



///
解密

45



///

</summary>

46



///

<param name="Value"></param>

47



///

<returns></returns>

48



public

string
DecryptString(
string
Value)

49







{

50



ICryptoTransform ct;

51



MemoryStream ms;

52



CryptoStream cs;

53



byte
[] byt;

54



55



ct
=
mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);

56



57



byt
=
Convert.FromBase64String(Value);

58



59



ms
=

new
MemoryStream();

60



cs
=

new
CryptoStream(ms, ct, CryptoStreamMode.Write);

61



cs.Write(byt,
0
, byt.Length);

62



cs.FlushFinalBlock();

63



64



cs.Close();

65



66



return
Encoding.UTF8.GetString(ms.ToArray());

67



}

68



69



70





public
Security()



{}

71



72





设置、获取Key、IV
#region
设置、获取Key、IV

73





/**/
///

<summary>

74



///
获取产生的Key值,加密过程之前需调用该方法

75



///

</summary>

76



///

<returns></returns>

77



public

string
GetKey()

78







{

79



mCSP.GenerateKey();

80



return
Convert.ToBase64String(mCSP.Key);

81



}

82



83





/**/
///

<summary>

84



///
获取产生的随机变量值,加密过程之前需调用该方法

85



///

</summary>

86



///

<returns></returns>

87



public

string
GetIV()

88







{

89



mCSP.GenerateIV();

90



return
Convert.ToBase64String(mCSP.IV);

91



}

92



93





/**/
///

<summary>

94



///
设置Key的值,解密过程之前需要调用

95



///

</summary>

96



///

<param name="key"></param>

97



///

<returns></returns>

98



public

string
SetKey(
string
key)

99







{

100



mCSP.Key
=
Convert.FromBase64String(key);

101



return
Convert.ToBase64String(mCSP.Key);

102



}

103





/**/
///

<summary>

104



///
设置随机变量IV的值,解密过程之前需要调用

105



///

</summary>

106



///

<param name="IV"></param>

107



///

<returns></returns>

108



public

string
SetIV(
string
IV)

109







{

110



mCSP.IV
=
Convert.FromBase64String(IV);

111



return
Convert.ToBase64String(mCSP.IV);

112



}

113



#endregion

114



115



116



}

117



}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: