新手求助:TripleDES要解密的数据的长度无效
这个是逆向某个程序的代码,源代码经过混淆,整理过的代码如下
在执行到解密的时候会出现 要解密的数据长度无效
我不知道该怎么解决 求各位大神帮忙
另:希望有人能据此写出加密算法
谢谢
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace Database4Test
{
class Program
{
private static TripleDESCryptoServiceProvider tdes;
private static SHA256Managed sha256;
private static string magic;
private static string delimiter;
static Program()
{
tdes=new TripleDESCryptoServiceProvider();
sha256=new SHA256Managed();
magic = "fishDatabase";
}
static void Main(string[] args)
{
Console.Write("Please input your data:");
string serial = Console.ReadLine();
Console.WriteLine("Now compute serial:{0}", ComputeExpression(Encoding.UTF8.GetBytes(serial.Trim()), GetTripleDESKey(Encoding.UTF8.GetBytes(magic))));
Console.ReadKey();
}
private static byte[] GetTripleDESKey(byte[] input)
{
int length = tdes.Key.Length;
if (length != input.Length)
{
byte[] output = new byte[length];
Array.Copy(sha256.ComputeHash(input), output, length - 1);
return output;
}
return input;
}
private static byte[] GetTripleDESIV(byte[] input, int length)
{
byte[] output = new byte[length];
Array.Copy(sha256.ComputeHash(Encoding.UTF8.GetBytes(Encoding.UTF8.GetString(input))), output, length - 1);
return output;
}
private static string ComputeExpression(byte[] input1, byte[] input2)
{
ICryptoTransform transform = null;
string str = string.Empty;
try
{
byte[] buffer1 = Convert.FromBase64String(Encoding.UTF8.GetString(input1));
using (MemoryStream ms = new MemoryStream(buffer1))
{
byte[] buffer2 = new byte[buffer1.Length + 1];
transform = tdes.CreateDecryptor(input2, GetTripleDESIV(input2, tdes.IV.Length));
using (CryptoStream cs = new CryptoStream(ms, transform, CryptoStreamMode.Read))
{
cs.Read(buffer2, 0, buffer2.Length);
}
str = Encoding.UTF8.GetString(buffer2).Replace("\0", "");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
transform.Dispose();
}
return str;
}
}
}
在执行到解密的时候会出现 要解密的数据长度无效
我不知道该怎么解决 求各位大神帮忙
另:希望有人能据此写出加密算法
谢谢

...全文
相关推荐
asp.net TripleDES加密、解密算法
加密,使用密码产生加密算法的公钥,并使用TripleDES对密码进行加密。解密,使用密码产生加密算法的公钥,并使用TripleDES对加密数据进行解密。
c#使用DES解密提示:指定键的大小对于此算法无效
c#使用DES解密提示:指定键的大小对于此算法无效 页面提示错误信息
TripleDES.rar_TripleDES_java TripleDES_triple DES_triple DES in
This is a triple des program
基于TripleDES的文件加密系统(更正版)
上次那个是debug版本,发错了。。。支持对文本文件,图像文件,压缩文件的加密因为这是第一个版本,未免有不尽人意的地方,欢迎指正.
C#常用加密解密方法(DES加密解密)
本节主要分享DES加密解密:DES,全称Data Encryption Standard,是一种对称加密算法。由于其安全性比较高(有限时间内,没有一种加密方法可以说是100%安全),很可能是最广泛的密钥系统(我们公司也在用,估计你们也有在用....),唯一一种方法可以破解该算法,那就是穷举法。DES(Data Encryption Standard)和TripleDES是对称加密的两种实现。DES和TripleDES基本算法一致,只是TripleDES算法提供的key位数更多,加密可靠性更高。


