DES 加解密问题,请求帮助,还可以再加分

woodboy23 woodboy23 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我写了一个DES加密码解密码的测试工具,
不知道为什么,把别人加密码的东西解密出来,自己再加密,就与原来的密文不一样,而且试着解密也出错.
自己随便对一段内容加密码后再解密也会出错
不知道是什么原因,
希望大家帮忙看看




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Security.Cryptography;

namespace DES
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public static string a(string A_0, string A_1, bool A_2)
{
string str;
byte[] buffer;
byte[] inputBuffer = Convert.FromBase64String(A_0);
if (A_2)
{
buffer = new MD5CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(A_1));
}
else
{
buffer = Encoding.UTF8.GetBytes(A_1);
}
TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
provider.Key = buffer;
provider.Mode = CipherMode.ECB;
provider.Padding = PaddingMode.PKCS7;
byte[] bytes = provider.CreateDecryptor().TransformFinalBlock(inputBuffer, 0, inputBuffer.Length);//主要是这一句报错
str = Encoding.UTF8.GetString(bytes);
return str;
}

public static string b(string A_0, string A_1, bool A_2)
{
string str;
byte[] buffer;
byte[] bytes = Encoding.UTF8.GetBytes(A_0);
if (A_2)
{
buffer = new MD5CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(A_1));
}
else
{
buffer = Encoding.UTF8.GetBytes(A_1);
}
TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
provider.Key = buffer;
provider.Mode = CipherMode.ECB;
provider.Padding = PaddingMode.PKCS7;
byte[] inArray = provider.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length);
str = Convert.ToBase64String(inArray, 0, inArray.Length);
return str;
}

private void button1_Click(object sender, EventArgs e)
{
string str3, str2, str1, str;
str = this.textBox1.Text;
str1 = Encoding.ASCII.GetString(Convert.FromBase64String(str));
string[] arr= str1.Split("&".ToCharArray());
str2 = arr[0];
str3 = arr[1];
this.textBox4.Text = str2;
str3 = a(str3, "gg", true);
str = a(str2, str3, true);
this.textBox2.Text = str3;
this.textBox3.Text = str;
}

private void button2_Click(object sender, EventArgs e)
{
string str, str1, str2, str3, str4;
str1 = this.textBox2.Text;
str2 = this.textBox3.Text;
str3 = b(str1, "gg", true);
str4 = b(str2, str3, true);
this.textBox2.Text = str3;
str4 = str4 + "&" + str3;
str = Convert.ToBase64String(Encoding.ASCII.GetBytes(str4));
this.textBox4.Text = str;
}

}
}

...全文

相关推荐

QT做的DES加解密实例

DES(Data Encryption Standard)是一种经典的对称加密算法,用于保护数据的安全性。在这个“QT做的DES加解密实例”中,我们将深入探讨如何使用QT库来实现DES的加解密功能。

stone1120

python实现AES,DES加解密算法

对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yao)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。

景天科技苑

微信小程序DES加解密DEMO

微信小程序DES加解密DEMO是一个实用的示例项目,主要展示了如何在微信小程序环境中实现数据的安全加密和解密功能。

死亡前奏曲

DES:DES加解密的python实现

学习这些代码可以帮助你更好地理解DES的工作原理,以及如何在实际项目中应用这种古老的加密算法。

管墨迪

易语言 DES加解密模块

JiaMi.dll"文件很可能就是实现DES算法的C++编写的动态链接库,而"DES.ec"文件则可能是易语言模块文件,包含了调用DLL的接口和易语言中的相关帮助文档或示例代码。

safedebug
评论 12
收藏 已收藏
分享
返回顶部
woodboy23
C# 111,128 成员 642,536 内容