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);
实践应用于某电信一个单点登录系统雏形。
代码如下:
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);
实践应用于某电信一个单点登录系统雏形。