解释下C#这段加密代码意思,原理以及运用了哪种算法

来源:百度知道 编辑:UC知道 时间:2024/06/21 23:54:12
string sourcefile = textBox1.Text.ToString();
string destinationfile =textBox2.Text.ToString
// 加密
int leng = textBox5.Text.Length;
int[] key = new int[leng];
string str = textBox5.Text;
Form1.Password = textBox5.Text;
for (int i = 0; i < leng; i++)
{
key[i] = (int)str[i];
}
FileStream fs1 = new FileStream(sourcefile, FileMode.Open, FileAccess.Read);
FileStream fs2 = new FileStream(destinationfile, FileMode.OpenOrCreate, FileAccess.Write);
BinaryWriter writer = new BinaryWriter(fs2);
byte[] byte1 = new byte[100];
long rdlen = 0;
long totlen = fs1.Length;
int len;
progressBar1.Maximum = (int)totlen;
w

不属于特定加密算法,可能是自己写的加密算法,就是设置一个字符串密码key,打开一个待加密的文件,每次读取100个字节,然后对这100个自己按照每隔key的长度将原来的字节加上密码对应的字节。
比如原文件内容为abcdefgh几个字符,密码为123,
则加密的过程为:
[a的ANSI码+1的ANSI码,组成第一个字节,
b的ANSI码+2的ANSI码,组成第二个字节,
c的ANSI码+3的ANSI码,组成第三个字节,]
[d的ANSI码+1的ANSI码,组成第四个字节,
e的ANSI码+2的ANSI码,组成第五个字节,
f的ANSI码+3的ANSI码,组成第六个字节,]
[g的ANSI码+1的ANSI码,组成第七个字节,
h的ANSI码+2的ANSI码,组成第八个字节,]

没什么技术含量.把要加密的内容写成二进制,然后对每个byte做了简单的偏移

加密就这2句,其他的都是转二进制储存的代码.

byte b = (byte)key[i % leng];
byte1[i] = (byte)(byte1[i] + b);

将内容偏移了b

2楼已经说明白啦
按照密钥单个字节错位加密

对内容按照100字节为单位截取
100字节按照密钥长度循环

加密规则是可以自己指定的