DES加密例题(des加密算法例题详解)

2023-02-27 14:20:58 密码用途 思思

求一简单的 DES加密实例。要c#.net实现!

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加密计算的问题,请各位高手解答一下,急用,谢谢。原题如下:

其实是循环移位,所以空缺的位由移出的位补上。规则就是des的相关技术资料,它怎么说的就怎么做。java,vc都有封装好的类,这取决于你用哪个来编程。使用时注意加密模式与填充模式的选择,加解密时要一致,不然结果会不对。

DES加密例题(des加密算法例题详解) 第1张

用c完成DES加密过程中的1轮的迭代变换过程

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