C#简化DES(S-DES),用于加密和解密128位纯文本块

时间:2012-10-28 09:24:39

标签: c# encryption des

您能否帮助我使用简化DES(S-DES)加密和解密128位纯文本块来使用控制台,Web或Win表单的C#源代码?我知道C#在System.Security.Cryptography命名空间中有一类DES,但我不能将它用于学术用途。

2 个答案:

答案 0 :(得分:1)

我在CodeProject中编写了article,使用C#实现DES块密码算法的简化版本,以加密和解密二进制文件。

SDES.cs 类是一个通用类,可用于加密/解密二进制文件或纯文本。

我将在MainFrm.cs文件中更改以下两个方法以满足您的需求

private void Encrypt()
private void Decrypt()

更改如下,而不是使用 BinaryReader 类打开文件,

  • 我将遍历纯文本“string”并通过char
  • 读取它
  • 将每个字符转换为字节
  • 加密字节并将其附加到字节数组
  • 最后将加密的字节再次转换为字符

代码将是:

private void Encrypt()
{
     byte[] output = new byte[txt_enc_in.Text.Length];
     for (int i = 0; i < output.Length; i++)
     {
          output[i] = my_Des.Encrypt(Convert.ToByte(txt_enc_in.Text[i]));
     }
     txt_enc_out.Text = "";
     for (int i = 0; i < output.Length; i++)
     {
          txt_enc_out.Text += Convert.ToChar(output[i]);
     }
 }  

反向步骤也适用于 Decrypt() 方法,也应在GUI上应用一些更改。 最终代码可用here

答案 1 :(得分:0)

这个算法有一个相当冗长(=可读)的Python实现:

http://hg.sagemath.org/sage-main/file/d06cf4b2215d/sage/crypto/block_cipher/sdes.py

您可以将其转换为C#,并以您的快乐方式。 :)