如何从加密文件中获取文件类型?

时间:2015-05-29 16:46:12

标签: c# encryption caesar-cipher

如何从加密文件(即C#)中使用file.enc获取文件类型

加密方法:移位密码Z 256

转移密码加密:

Y i =(X i + k)%256

X i =(Y i - k)%256

其中:

X i ,i = 1:n,是普通字节的输入。

Y i ,i = 1:n,是输出密码字节。

k是移位键,它是1到255之间的秘密字节。

如果我必须首先解密文件,如何在不使用穷举搜索的情况下解密它以找到 shift键

我不是在谈论获得.enc,因为我已经可以轻松地做到这一点。我无法确定加密前文件的格式,例如.doc.xls.pdf.jpg.wav文件类型。

我尝试过:

byte[] byteArray = File.ReadAllBytes(openFileDialog1.FileName);

// Mean
double mean = 0;

for (int i = 0; i < byteArray.Length; i++)
{
    mean += byteArray[i];
}

mean = mean / byteArray.Length;
txtMean.Text = mean.ToString("#.000");

// Median
byteArray.ToList().Sort();
int median = byteArray[(int)Math.Floor((decimal)(byteArray.Length / 2))];
txtMedian.Text = median.ToString();

// Mode
var groups = byteArray.GroupBy(g => g);
int maxCount = groups.Max(g => g.Count());
int mode = groups.First(g => g.Count() == maxCount).Key;
txtMode.Text = mode.ToString();

// Standard Deviation
double standardDeviation = byteArray.Select(value => (value - mean) * (value - mean)).Sum();
standardDeviation = Math.Sqrt(standardDeviation / byteArray.Length);
txtStandardDeviation.Text = standardDeviation.ToString("#.000");

// Entropy (I don't know how to get this part.)
int entropy = 0;
txtEntropy.Text = entropy.ToString();

因此,您可以看到我获取文件,读取文件的所有字节并找到meanmedianmodestandard deviation和{ {1}}值。

顺便说一句,我不知道如何找到文件的熵值,是否有一些公式或者C#内置方法?我搜索过,但一无所获。

我认为使用entropy值可以确定文件类型,但它只确定mode个文件,因为.pdf文件的模式为48。

.pdf.doc.xls.docx.xlsx.jpg文件都为我提供了0模式。

我也尝试使用以下页面读取字节:

ASCII字符代码图1 - https://msdn.microsoft.com/en-us/library/60ecse8t(v=vs.80).aspx ASCII字符代码图表2 - https://msdn.microsoft.com/en-us/library/9hxt0028(v=vs.80).aspx

使用此代码:

.wav

但它只是返回了我无法确定文件类型差异的乱码。

1 个答案:

答案 0 :(得分:1)

如果是&#39; Caesar Shift &#39;,那么您只需按字母顺序排列,尝试每个可能的班次,其中只有25个。

NBCM CM UH YRUGJFY
nbcm cm uh yrugjfy
ocdn dn vi zsvhkgz
pdeo eo wj atwilha
qefp fp xk buxjmib
rfgq gq yl cvyknjc
sghr hr zm dwzlokd
this is an example
uijt jt bo fybnqmf
vjku ku cp gzcorng
wklv lv dq hadpsoh
xlmw mw er ibeqtpi
ymnx nx fs jcfruqj
znoy oy gt kdgsvrk
aopz pz hu lehtwsl
bpqa qa iv mfiuxtm
cqrb rb jw ngjvyun
drsc sc kx ohkwzvo
estd td ly pilxawp
ftue ue mz qjmybxq
guvf vf na rknzcyr
hvwg wg ob sloadzs
iwxh xh pc tmpbeat
jxyi yi qd unqcfbu
kyzj zj re vordgcv
lzak ak sf wpsehdw
mabl bl tg xqtfiex
nbcm cm uh yrugjfy