C#.NET 1.1 的默认 DES 算法与 Java 的 JCE 的 DES 加密算法不同,需要改为 ECB 模式。
代码如下:
Bruce Lee
17
:
56
:
55
///
<summary>
///
DES + Base64 加密
///
</summary>
///
<param name="strText">
密码明文字符串
</param></param>
///
<param name="strKey">
密钥明文字符串
</param>
///
<returns>
已加密字符串
</returns>
public
static
string
DesBase64Encrypt(
string
strText,
string
strKey)
{
byte
[] byKey
=
new
byte
[
8
]{
56
,
50
,
55
,
56
,
56
,
55
,
49
,
49
};
byte
[] byIV
=
new
byte
[
8
] {
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
};
DESCryptoServiceProvider cryptoProvider
=
new
DESCryptoServiceProvider();
int
i
=
cryptoProvider.KeySize;
cryptoProvider.Mode
=
System.Security.Cryptography.CipherMode.ECB;
MemoryStream ms
=
new
MemoryStream();
CryptoStream cst
=
new
CryptoStream(ms,cryptoProvider.CreateEncryptor(byKey,byIV),CryptoStreamMode.Write);
StreamWriter sw
=
new
StreamWriter(cst);
sw.Write(strText);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return
Convert.ToBase64String(ms.GetBuffer(),
0
,(
int
)ms.Length);
实践应用于某电信一个单点登录系统雏形。