怎么實(shí)現(xiàn)對(duì)文件的加密和解密?
用C#對(duì)文件進(jìn)行加密和解密,其實(shí)方法有許許多多,其區(qū)別主要是加密的算法不同,至于加密的原理都是大同小異的。
我們常用的算法一般都有DES算法,AES算法,RSA算法,Base64算法,md5算法等等等等。
如果是用C#用于開(kāi)發(fā),我估計(jì)你所用的編輯器基本就是VS Code或者Visual studio系列沒(méi)錯(cuò)了。這些編譯器都是只帶了各種加密算法庫(kù)或者你可以通過(guò)VS Code插件安裝的方式添加你所需要的算法,然后再來(lái)進(jìn)行對(duì)文件的加密操作。
既然你問(wèn)到了怎么對(duì)文件來(lái)進(jìn)行加密與解密,那我們就來(lái)舉一個(gè)小小的加密文件的例子,用C#中的FileStream類(lèi)來(lái)對(duì)文件進(jìn)行簡(jiǎn)單的加密解密。
private void Encryption ( string source, string target)
{
//創(chuàng)建一個(gè)讀取源文件的文件流
using( FileStream fsRead = new FileStream( source, FileMode.Open))
{
//創(chuàng)建一個(gè)寫(xiě)入新文件的文件流
using( FileStream fsWrite = new FileStream( target, FileMode.Create))
{
Byte[] bytes = new Bytes[ 1024*5];
int count = 0;
while( (count = fsRead.Read ( bytes, 0, bytes.Length )>0)
{
//我們讀取的文件現(xiàn)在已經(jīng)是一個(gè)個(gè)的字節(jié),加密的本質(zhì)其實(shí)把讀取到的字節(jié)修改一下,然后再寫(xiě)入到一個(gè)新的文件中
for ( int i = 0; i<count; i++)
{
//簡(jiǎn)單的加密算法
bytes[ i] = (byte)(byte.MaxValue-bytes[i]);
}
fsWrite.Write( bytes, 0, count);
}
}
}
}
以上的一個(gè)方法輕松的實(shí)現(xiàn)了文件的簡(jiǎn)單加密與解密,我們仔細(xì)看看其中加密的那一行就會(huì)發(fā)現(xiàn),其實(shí)byte.MaxValue的值是255,用255減去本身得到一個(gè)加密之后的byte,我們需要解密的時(shí)候再次調(diào)用這個(gè)方法用255減去加密之后的byte就會(huì)得到加密前的byte, 這樣就輕松的實(shí)現(xiàn)了文件的加密與解密!
總結(jié)這個(gè)例子只是闡述一下C#對(duì)文件加密與解密的一個(gè)思路,這對(duì)了解C#中怎么對(duì)文件進(jìn)行加密與解密的原理還是有所幫助的。實(shí)際應(yīng)用中如果這樣進(jìn)行加密,他的安全級(jí)別還是很低的,建議使用開(kāi)頭提到的那些高級(jí)加密算法。