des加密算法如下:
public byte[] Encrypt(byte[] pToEncrypt, byte[] sKey)
{
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = sKey;
des.IV = sKey;
// des.Padding = PaddingMode.None;
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(pToEncrypt, 0, pToEncrypt.Length);
cs.FlushFinalBlock();
return ms.ToArray();
}
}
}
catch
{
return null;
} }现加密数据:
byte[] src = System.Text.Encoding.GetEncoding(0).GetBytes("12345678"), key = System.Text.Encoding.GetEncoding(0).GetBytes("11111111")
byte[] data=Encrypt(src,key);
如果des.Padding = PaddingMode.None,则data.Length=8;如果des.Padding 取默认值即PKCS7,,则data.Length=16.
我疑惑的是src 的长度正好是8byte即64bit,会添加填充字符串吗?
public byte[] Encrypt(byte[] pToEncrypt, byte[] sKey)
{
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = sKey;
des.IV = sKey;
// des.Padding = PaddingMode.None;
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(pToEncrypt, 0, pToEncrypt.Length);
cs.FlushFinalBlock();
return ms.ToArray();
}
}
}
catch
{
return null;
} }现加密数据:
byte[] src = System.Text.Encoding.GetEncoding(0).GetBytes("12345678"), key = System.Text.Encoding.GetEncoding(0).GetBytes("11111111")
byte[] data=Encrypt(src,key);
如果des.Padding = PaddingMode.None,则data.Length=8;如果des.Padding 取默认值即PKCS7,,则data.Length=16.
我疑惑的是src 的长度正好是8byte即64bit,会添加填充字符串吗?
如果正好是就不用了。
如果不想多出8个字符,则使用PaddingMode.Zeros。