版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、信息與網(wǎng)絡(luò)安全實驗報告一、實驗名稱設(shè)計數(shù)字簽名二、實驗?zāi)康睦斫鈹?shù)字簽名,學會設(shè)計數(shù)字簽名三、實驗原理1:調(diào)用.NET2.0的MAKECERT創(chuàng)建含有私鑰的數(shù)字證書,并存儲到個人證書區(qū);2:將該證書導出為pfx文件,并為其指定一個用來打開pfx文件的password;3:讀取pfx文件,導出pfx中公鑰和私鑰;4:用pfx證書中的公鑰進行數(shù)據(jù)的加密,用私鑰進行數(shù)據(jù)的解密。四 、簽名算法:using System;using System.Text;using System.Security.Cryptography;namespace DigitalSignature /信息和簽名的封包 pub
2、lic struct DS public byte data; public byte signature; class Program 1 / 8 static DSACryptoServiceProvider dsa = new DSACryptoServiceProvider(); /創(chuàng)建了公鑰和私鑰對 /創(chuàng)建數(shù)字簽名 DS CreateSignature(string strData) SHA1Managed sha1 = new SHA1Managed(); SHA1Managed sha1 = new SHA1Managed(); DSASignatureFormatter sig
3、Formatter = new DSASignatureFormatter(dsa); byte data_Bytes = Encoding.ASCII.GetBytes(strData); byte hash_Bytes = sha1.ComputeHash(data_Bytes); sigFormatter.SetHashAlgorithm("SHA1"); byte signedHash = sigFormatter.CreateSignature(hash_Bytes); DS ds = new DS(); ds.data = hash_Bytes; ds.sign
4、ature = signedHash; return ds; /驗證數(shù)字簽名 bool VerifySignature(DS ds) byte remote_HashedValue = ds.data; byte remote_SignedHash = ds.signature; DSASignatureDeformatter sigDeformatter = new DSASignatureDeformatter(dsa); sigDeformatter.SetHashAlgorithm("SHA1"); if (sigDeformatter.VerifySignatur
5、e(remote_HashedValue, remote_SignedHash) return true; return false; static void Main(string args) string strMsg = "JGLRIEHDKVJFLHGJGYRKPYEVCNADWQKGLBUFOWDT" /報文文本 DS ds = new DS(); Program prog = new Program(); ds = prog.CreateSignature(strMsg); /模擬簽名在傳輸途中遭到破壞或修改 /. /ds.signature = new byt
6、e40; if (prog.VerifySignature(ds) /驗證通過 Console.WriteLine("The signature used to sign the hash has been verified."); else /驗證未通過 Console.WriteLine("The signature used to sign the hash doesn't match the hash."); Console.ReadLine(); 五、對數(shù)字簽名算法的理解數(shù)字簽名是非對稱密鑰加密技術(shù)與數(shù)字摘要技術(shù)的應(yīng)用。數(shù)字簽名有兩種功
7、效:一是能確定消息確實是由發(fā)送方簽名并發(fā)出來的,因為別人假冒不了發(fā)送方的簽名。二是數(shù)字簽名能確定消息的完整性。因為數(shù)字簽名的特點是它代表了文件的特征,文件如果發(fā)生改變,數(shù)字簽名的值也將發(fā)生變化。不同的文件將得到不同的數(shù)字簽名。 一次數(shù)字簽名涉及到一個哈希函數(shù)、發(fā)送者的公鑰、發(fā)送者的私鑰。”一 、實驗名稱PGP算法二、 實驗?zāi)康牧私釶GP的工作原理,掌握PGP算法的使用三、 實驗原理1. 發(fā)送方創(chuàng)建消息2. 發(fā)送方生成消息的160位的散列碼3. 用發(fā)送方私鑰對散列進行RSA加密,加到消息上4. 傳輸數(shù)據(jù)5. 接收方用發(fā)送方的公鑰對加密部分進行RSA解密6. 接收方將剩余數(shù)據(jù)生成160位散列碼7.
8、 生成散列與解密散列進行比較,如果匹配,則認證成功四 源程序 :import java.io.*;import java.security.*;import java.lang.reflect.*;import javax.crypto.*;import javax.crypto.spec.*;public class DecryptStart extends ClassLoader / 這些對象在構(gòu)造函數(shù)中設(shè)置, / 以后loadClass()方法將利用它們解密類 private SecretKey key; private Cipher cipher; / 構(gòu)造函數(shù):設(shè)置解密所需要的對象
9、public DecryptStart( SecretKey key ) throws GeneralSecurityException, IOException this.key = key; String algorithm = "DES" SecureRandom sr = new SecureRandom(); System.err.println( "DecryptStart: creating cipher" ); cipher = Cipher.getInstance( algorithm ); cipher.init( Cipher.DE
10、CRYPT_MODE, key, sr ); / main過程:我們要在這里讀入密匙,創(chuàng)建DecryptStart的 / 實例,它就是我們的定制ClassLoader。 / 設(shè)置好ClassLoader以后,我們用它裝入應(yīng)用實例, / 最后,我們通過Java Reflection API調(diào)用應(yīng)用實例的main方法 static public void main( String args ) throws Exception String keyFilename = args0; String appName = args1; / 這些是傳遞給應(yīng)用本身的參數(shù) String realArgs =
11、new Stringargs.length-2; System.arraycopy( args, 2, realArgs, 0, args.length-2 ); / 讀取密匙 System.err.println( "DecryptStart: reading key" ); byte rawKey = Util.readFile( keyFilename ); DESKeySpec dks = new DESKeySpec( rawKey ); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance( &qu
12、ot;DES" ); SecretKey key = keyFactory.generateSecret( dks ); / 創(chuàng)建解密的ClassLoader DecryptStart dr = new DecryptStart( key ); / 創(chuàng)建應(yīng)用主類的一個實例 / 通過ClassLoader裝入它 System.err.println( "DecryptStart: loading "+appName+"" ); Class clasz = dr.loadClass( appName ); / 最后,通過Reflection API
13、調(diào)用應(yīng)用實例 / 的main()方法 / 獲取一個對main()的引用 String proto = new String1; Class mainArgs = (new String1).getClass() ; Method main = clasz.getMethod( "main", mainArgs ); / 創(chuàng)建一個包含main()方法參數(shù)的數(shù)組 Object argsArray = realArgs ; System.err.println( "DecryptStart: running "+appName+".main()&qu
14、ot; ); / 調(diào)用main() main.invoke( null, argsArray ); public Class loadClass( String name, boolean resolve ) throws ClassNotFoundException try / 我們要創(chuàng)建的Class對象 Class clasz = null; / 必需的步驟1:如果類已經(jīng)在系統(tǒng)緩沖之中 / 我們不必再次裝入它 clasz = findLoadedClass( name ); if (clasz != null) return clasz; / 下面是定制部分 try / 讀取經(jīng)過加密的類文
15、件 byte classData = Util.readFile( name+".class" ); if (classData != null) / 解密. byte decryptedClassData = cipher.doFinal( classData ); / . 再把它轉(zhuǎn)換成一個類 clasz = defineClass( name, decryptedClassData, 0, decryptedClassData.length ); System.err.println( "DecryptStart: decrypting class "
16、;+name+"" ); catch( FileNotFoundException fnfe ) / 必需的步驟2:如果上面沒有成功 / 我們嘗試用默認的ClassLoader裝入它 if (clasz = null) clasz = findSystemClass( name ); / 必需的步驟3:如有必要,則裝入相關(guān)的類 if (resolve && clasz != null) resolveClass( clasz ); / 把類返回給調(diào)用者 return clasz; catch( IOException ie ) throw new ClassNotFoundException( ie.toString(); catch( GeneralSecurityExc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年安徽林業(yè)職業(yè)技術(shù)學院單招職業(yè)技能考試參考題庫含詳細答案解析
- 2026年石家莊工程職業(yè)學院單招綜合素質(zhì)筆試模擬試題含詳細答案解析
- 2026年長江工程職業(yè)技術(shù)學院單招綜合素質(zhì)考試參考題庫含詳細答案解析
- 2026年湖北工程職業(yè)學院單招職業(yè)技能考試備考試題含詳細答案解析
- 2026年河南藝術(shù)職業(yè)學院單招綜合素質(zhì)筆試參考題庫含詳細答案解析
- 2026年浙江警官職業(yè)學院單招綜合素質(zhì)筆試備考試題含詳細答案解析
- 2026年烏蘭察布職業(yè)學院單招綜合素質(zhì)筆試參考題庫含詳細答案解析
- 2026年江南影視藝術(shù)職業(yè)學院高職單招職業(yè)適應(yīng)性測試備考試題及答案詳細解析
- 2026年滄州醫(yī)學高等專科學校高職單招職業(yè)適應(yīng)性測試模擬試題及答案詳細解析
- 2026年南陽職業(yè)學院單招綜合素質(zhì)筆試參考題庫含詳細答案解析
- 酒吧宿舍管理制度文本
- 數(shù)字化教學平臺的數(shù)據(jù)隱私保護策略
- TCD經(jīng)顱多普勒課件
- 2025年安徽歷年單招試題及答案
- 2025年考研英語真題試卷及答案
- 酒店治安安全管理制度范本
- 專家咨詢委員會建立方案
- 兼職剪輯外包合同范本
- 物業(yè)入戶維修標準及流程
- 生物濾池除臭裝置設(shè)計計算實例
- 選煤廠安全規(guī)程培訓考核試題帶答案
評論
0/150
提交評論