C#使用RSA加密解密文件
更新時(shí)間:2020年06月28日 08:44:34 作者:Cosmop01itan
這篇文章主要為大家詳細(xì)介紹了C#使用RSA加密解密文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了C#使用RSA加密解密文件的具體代碼,供大家參考,具體內(nèi)容如下
加密代碼:
//加密代碼,注意會(huì)覆蓋原文件,里面有我的公鑰,你要用時(shí)記得覆蓋我的公鑰 private bool encryptFile(string filename) { FileStream f; try { f = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.Read); } catch { return false; } Random r = new Random(); Thread.Sleep(10*r.Next(3,8)); RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024); rsa.FromXmlString("<RSAKeyValue><Modulus>w7nNT8U7kwTw8UqLk0lROxmfTRZnQrMH1QrNyUGtoeAJ3w+iH08j+h83cPWxwPoxpXm1cgCLFWtCFWY1rkQDCCLxJhUIwYTbGKTg9h0uUVfNxGiNji7dcHShd01UYpZjHCwOar1wjJD4vJqVJCk++59UUMhE9IUATuSUVpRy1bE=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>"); //導(dǎo)入密鑰 byte[] data = new byte[16]; ArrayList con = new ArrayList(); while(f.Read(data, 0, 16)!=0) { byte[] result = rsa.Encrypt(data,false); //Thread.Sleep(10 * r.Next(2, 7)); con.Add(result); } //加密 f.Seek(0, SeekOrigin.Begin); foreach(byte[] d in con) { f.Write(d, 0, d.Length); } f.Close(); return true; }
解密代碼:
//解密代碼,覆蓋原文件,返回值表示是否解密成功 private bool decryptFile(string filename,string key) { FileStream f; try { f = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.Read); } catch { return false; } RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024); try { rsa.FromXmlString(key); } catch { return false; } byte[] data = new byte[128]; ArrayList con = new ArrayList(); while (f.Read(data, 0, 128) != 0) { byte[] result; try { result = rsa.Decrypt(data, false); } catch { return false; } con.Add(result); } //解密 f.SetLength(con.Count * 16); f.Seek(0, SeekOrigin.Begin); foreach (byte[] d in con) { f.Write(d, 0, d.Length); } f.Close(); return true; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C# Csv實(shí)現(xiàn)基本的讀寫(xiě)和轉(zhuǎn)換DataTable
本文主要介紹了C# Csv實(shí)現(xiàn)基本的讀寫(xiě)和轉(zhuǎn)換DataTable,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02C# 中如何利用lambda實(shí)現(xiàn)委托事件的掛接
在寫(xiě)一個(gè)小程序的時(shí)候,碰到了這樣的問(wèn)題,需要用委托來(lái)掛接事件,但是又想在這事件中使用局部的變量,而委托一旦定義好后,掛接方就沒(méi)有辦法再添加額外的形參了。那有沒(méi)有什么辦法,可以實(shí)現(xiàn)呢2013-07-07WPF 在image控件用鼠標(biāo)拖拽出矩形的實(shí)現(xiàn)方法
這篇文章主要介紹了WPF 在image控件用鼠標(biāo)拖拽出矩形的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08一看就懂:圖解C#中的值類(lèi)型、引用類(lèi)型、棧、堆、ref、out
這篇文章主要介紹了一看就懂:圖解C#中的值類(lèi)型、引用類(lèi)型、棧、堆、ref、out,本文用淺顯易懂的語(yǔ)言組織介紹了這些容易混淆的概念,需要的朋友可以參考下2015-06-06在C#中調(diào)用VBScript、javascript等腳本的實(shí)現(xiàn)代碼
在C#中調(diào)用VBScript、javascript等腳本的實(shí)現(xiàn)步驟,需要的朋友可以參考下。2009-11-11