您能否帮助我使用简化DES(S-DES)加密和解密128位纯文本块来使用控制台,Web或Win表单的C#源代码?我知道C#在System.Security.Cryptography
命名空间中有一类DES,但我不能将它用于学术用途。
答案 0 :(得分:1)
我在CodeProject中编写了article,使用C#实现DES块密码算法的简化版本,以加密和解密二进制文件。
SDES.cs 类是一个通用类,可用于加密/解密二进制文件或纯文本。
我将在MainFrm.cs文件中更改以下两个方法以满足您的需求
private void Encrypt()
private void Decrypt()
更改如下,而不是使用 BinaryReader 类打开文件,
代码将是:
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#,并以您的快乐方式。 :)