Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从加密文件中获取文件类型?_C#_Encryption_Caesar Cipher - Fatal编程技术网

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

C# 如何从加密文件中获取文件类型?,c#,encryption,caesar-cipher,C#,Encryption,Caesar Cipher,如何从加密文件(即file.enc)中使用C#获取文件类型 加密方法:移位密码Z256 移位密码加密: Yi=(Xi+k)%256 Xi=(Yi-k)%256 其中: Xi,i=1:n,是以普通字节为单位的输入 Yi,i=1:n,是输出的密码字节 k是移位键,它是介于1和255之间的秘密字节 如果我必须首先解密文件,我如何才能在不使用穷举搜索来查找移位键的情况下对其进行解密 我不是说要获得.enc,因为我已经可以轻松做到这一点了。我无法确定文件在加密之前的状态,例如.doc,.xls,.pdf,

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

加密方法:移位密码Z256

移位密码加密:

Yi=(Xi+k)%256

Xi=(Yi-k)%256

其中:

Xi,i=1:n,是以普通字节为单位的输入

Yi,i=1:n,是输出的密码字节

k是移位键,它是介于1和255之间的秘密字节

如果我必须首先解密文件,我如何才能在不使用穷举搜索来查找移位键的情况下对其进行解密

我不是说要获得
.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();

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

如果它是一个“凯撒移位”,那么你只需运行字母表,尝试每个可能的移位,它们只有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

加密的全部目的是使其无法读取任何有关明文的信息。@SLaks-True,但在本例中,它是一种使用移位密码的简单加密。我可以先使用穷举搜索来解密文件以找到移位键,但是有一种更好的方法来进行解密,这就是我遇到这个问题的原因。@ArtjomB.-好的,我编辑了这个问题,包括加密方法和关于移位键的部分,没有使用穷举搜索。@ArtjomB。我添加了有关移位密码的更多信息。@ArtjomB。-从技术上讲,它是Caesar密码,但它使用了问题正文中可用链接中的256个ASCII字符代码(而不是正常的26个字母字符)。不,这是一个带有Z256的移位密码,这就是我链接ASCII字符代码表的原因。然后,您只有256种可能性可以尝试。这是2^8,它根本不提供来自暴力攻击的安全性。试一下所有的可能性。你能编辑你的答案吗?这样我就可以给你的答案打分了?你的答案最终是正确的。我最终通过反复试验找到了换档键。我必须先解密字节才能找到文件类型,所以你是对的。我将您的答案标记为正确,但我想将我的评分更改为+1,因此如果您编辑您的答案并保存编辑,我将能够为您更改您的评分。
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