雜湊演算法的簡單加密程式

2021-08-04 12:26:20 字數 2957 閱讀 7069

在c#的windows學習中我們可以利用簡單的窗體和一些簡單的類來寫乙個加密文字的簡單加密程式,既然是簡單的,那麼這個程式就只會加密和解密。

介面(我用的vs2010)

新建乙個form介面

兩個textbox控制項,四個button控制項,兩個lable控制項

在選擇檔案的時候要用到 openfiledialog控制項

由於這個很簡單所以我就沒有設定可輸入金鑰 金鑰在寫好的時候已經固定了,如果想要每次加密的時候都自己輸入密碼也可以tabcontrol控制項把加密和解密分開 然後就簡單了。

好了 先來說自己設定的密碼  我用的雜湊演算法128位的加密

直接上**(這是加密的時候的):

utf8encoding utf = new utf8encoding();

byte key = utf.getbytes(textbox2.text);//我們自己輸入的密碼(解密需要)

byte po = utf.getbytes("a12345678");//另外乙個需要自己設定的密碼

hmacmd5 md5 = new hmacmd5(key);(定義雜湊演算法物件)

byte edata = md5.computehash(key);(物件呼叫方法)

byte sdata = md5.computehash(po);

這是解密的時候的(和上面一樣)

utf8encoding utf = new utf8encoding();

byte key = utf.getbytes(textbox2.text);

byte po = utf.getbytes("a12345678");

hmacmd5 md5 = new hmacmd5(key);

byte edata = md5.computehash(key);

byte sdata = md5.computehash(po);

由於在加密中我們需要這個加密字串的位元組,我們先定義乙個utf變數 用以轉換,還要定義位元組陣列來儲存,在加密的過程中我們可以直接利用c#中自己攜帶的加密類來完成加密。

if (textbox1.text == "" || textbox2.text != "123456")

messagebox.show("加密路徑為空,或密碼不正確");

else

下面是加密類:

filestream w = new filestream(path, filemode.openorcreate, fileaccess.readwrite);//讀取要加密的流

tripledescryptoserviceprovider keys = new tripledescryptoserviceprovider();//生成加密物件

cryptostream cry = new cryptostream(w, keys.createdecryptor(key, iv), cryptostreammode.read);//加密流和資料的關聯

byte fromencrypt = new byte[w.length];//生成儲存流大小的緩衝區

cry.read(fromencrypt, 0, fromencrypt.length);//將此流讀取到緩衝區

w.close();//關閉流

filestream s = new filestream(path, filemode.openorcreate, fileaccess.readwrite);//寫入流的關聯

s.write(fromencrypt, 0, fromencrypt.length);//寫入

cry.close();//關閉流

s.close();//關閉流

下面是解密在form類的**:

if (textbox1.text == "" || textbox2.text != "123456")

messagebox.show("加密路徑為空,或密碼不正確");

else

下面是解密類:

filestream w = new filestream(path, filemode.openorcreate, fileaccess.readwrite);//讀取要加密的流

tripledescryptoserviceprovider keys = new tripledescryptoserviceprovider();//生成加密物件

cryptostream cry = new cryptostream(w, keys.createdecryptor(key, iv), cryptostreammode.read);//加密流和資料的關聯

byte fromencrypt = new byte[w.length];//生成儲存流大小的緩衝區

cry.read(fromencrypt, 0, fromencrypt.length);//將此流讀取到緩衝區

w.close();//關閉流

filestream s = new filestream(path, filemode.openorcreate, fileaccess.readwrite);//寫入流的關聯

s.write(fromencrypt, 0, fromencrypt.length);//寫入

cry.close();//關閉流

s.close();//關閉流

可以看出 在初學的時候,vs中已經有了我們要寫的大多數功能的**, 而我們只要在函式中呼叫就可以了,這個也是我在學習中發現網上關於這個的介紹還是不夠多要不然就是自己看不懂,所以在每日的複習中就寫上來了。作為乙個新手,還有很多的不足和錯誤 ,歡迎各位大佬指出。

雜湊演算法加密

雜湊演算法加密 import hashlib password 123456 defpwd hs pwd hashlib.md5 採用hashlib.md5 加密方式,獲得乙個雜湊物件 hs pwd.update password.encode utf 8 為密碼進行加密 加鹽,增加撞庫成本 sal...

對稱加密 非對稱加密 雜湊(雜湊)演算法

也叫私鑰加密演算法,其特徵是收信方和發信方使用相同的金鑰,即加密金鑰和解密金鑰是相同或等價的。也叫公鑰加密演算法。其特徵是收信方和發信方使用的金鑰互不相同,而且幾乎不可能從加密金鑰推導解密金鑰。用公鑰加密的過程叫加密 用私鑰解密的過程叫解密 用私鑰加密的訊息稱為簽名,只有擁有私鑰的使用者可以生成簽名...

shiro的雜湊演算法 加密

1,在身份認證過程往往會涉及加密,如果不加密那麼資料資訊不安全。shiro內容實現了比較多的雜湊演算法。如md5 sha等 而且提供了加鹽功能。比如 123456 的md5碼為 e10adc3949ba59abbe56e057f20f883e 這個md5碼很多 可以找到相應的原密碼。但是如果md5 ...