public sealed class DES
{
private static string iv = "123456789";
private static string key = "12345678"; /// summary
/// DES加密偏移量,必须是=8位长的字符串
/// /summary
public string IV
{
get { return iv; }
set { iv = value; }
} /// summary
/// DES加密的私钥,必须是8位长的字符串
/// /summary
///
public string Key
{
get { return key; }
set { key = value; }
} /// summary
/// 对字符串进行DES加密
/// /summary
/// param name="sourceString"待加密的字符串/param
/// returns加密后的BASE64编码的字符串/returns public static string Encrypt(string sourceString)
{
if (sourceString != "")
{
byte[] btKey = Encoding.Default.GetBytes(key);
byte[] btIV = Encoding.Default.GetBytes(iv);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
using (MemoryStream ms = new MemoryStream())
{
byte[] inData = Encoding.Default.GetBytes(sourceString);
try
{
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIV), CryptoStreamMode.Write))
{
cs.Write(inData, 0, inData.Length);
cs.FlushFinalBlock();
}
return Convert.ToBase64String(ms.ToArray());
}
catch
{
throw;
}
}
}
else
return "";
} /// summary
/// 对DES加密后的字符串进行解密
/// /summary
/// param name="encryptedString"待解密的字符串/param
/// returns解密后的字符串/returns public static string Decrypt(string encryptedString)
{
if (encryptedString != "")
{
byte[] btKey = Encoding.Default.GetBytes(key);
byte[] btIV = Encoding.Default.GetBytes(iv);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
using (MemoryStream ms = new MemoryStream())
{
byte[] inData = Convert.FromBase64String(encryptedString);
try
{
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(btKey, btIV), CryptoStreamMode.Write))
{
cs.Write(inData, 0, inData.Length);
cs.FlushFinalBlock();
}
return Encoding.Default.GetString(ms.ToArray());
}
catch
{
throw;
}
}
}
else
return "";
}}
其实是循环移位,所以空缺的位由移出的位补上。规则就是des的相关技术资料,它怎么说的就怎么做。java,vc都有封装好的类,这取决于你用哪个来编程。使用时注意加密模式与填充模式的选择,加解密时要一致,不然结果会不对。
DES算法处理的数据对象是一组64比特的明文串.设该明文串为m=m1m2…m64 (mi=0或1).明文串经过64比特的密钥K来加密,最后生成长度为64比特的密文E.其加密过程图示如下:
DES算法加密过程
对DES算法加密过程图示的说明如下:待加密的64比特明文串m,经过IP置换后,得到的比特串的下标列表如下:
IP 58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7