freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

房產(chǎn)證信息數(shù)字簽名的實(shí)現(xiàn)—免費(fèi)計算機(jī)畢業(yè)設(shè)計論文(編輯修改稿)

2025-01-04 10:12 本頁面
 

【文章內(nèi)容簡介】 了在 對證件防偽系統(tǒng)中對 持有證書人真實(shí) 身 份的鑒別 。 MED S39。()ASKEDH a s hS H A 1D ’ 圖 1 RSA私鑰加密 :哈希和簽名 APKD S ( ( ) )AAP K S KD E MD ’E 圖 2 RSA公鑰解密 MH a s hS H A 1D ” 圖 3 哈希過程 `` 3 房產(chǎn)證 公文數(shù)字簽名 系統(tǒng)總體設(shè)計 房產(chǎn)證 公文數(shù)字簽名 系統(tǒng)總共分為兩大功能模塊:房產(chǎn)證 公文 處理模塊和信息安全處理模塊,而信息安全處理模塊主要由密鑰管理模塊,數(shù)字簽名生成模塊和簽名驗證模塊構(gòu)成,(如圖 4所示) 房 產(chǎn) 證 處理 模 塊信 息 安 全 處 理 模 塊R S A 密 鑰 管 理 模 塊數(shù) 字 簽 名生 成 模 塊簽 名 驗證 模 塊 圖 4 系統(tǒng)功能圖 下面分別介紹各個模塊的功能 房產(chǎn)證 公文 處理模塊 在不同的房產(chǎn)證中相應(yīng)的 證件的輸入信息不相同, 公文處理模塊 采用證件輸入界面,將信息存儲為一種統(tǒng)一的數(shù)據(jù)格式 公文文件 就可以進(jìn)行相同的安全處理,在驗證時在將統(tǒng)一格式的數(shù)據(jù) 公文 進(jìn)行信息還原就可以實(shí)現(xiàn)。因此系統(tǒng)可以方便的進(jìn)行信息輸入,其證件信息輸入界面如圖 5 所示。 圖 5 房產(chǎn)證 信息 輸入界面 在 公文處理 模塊中,監(jiān)管中心需要把用戶房屋產(chǎn)權(quán) 者 的相關(guān)內(nèi)容輸入這個數(shù)字文件中; 例如 : 證書持有人 姓名; 張 XXX 房屋產(chǎn)證 編號; 0000354 房屋的類型; 商品房 房屋使用年限; 50 年 房屋所在地址; XXX 路 XX街 XXXX 號 開發(fā)商名稱; XXX 房地產(chǎn)開發(fā)公司 `` 物管單位; XXX 物業(yè)管理公司 戶主聯(lián)系電話 02883961853 私密問題; XXXXXX 問題答案; XXXXXXX 當(dāng) 用戶把這些都輸入到相應(yīng)的對話框中通過保存按鈕 就可以把這個證件保存在一個相應(yīng)的文件中。這個只是房產(chǎn)證件 原件 對應(yīng)的數(shù)字公文文件 。 為了真正能對戶主的利益安全考慮,在本設(shè)計中還加入了一個戶主的秘密問題,以及秘密問題的答案這兩項。通過這兩項再結(jié)合數(shù)字簽名就更能更好的辨別這個證件的真?zhèn)瘟?,假如戶主提問? 我高中最喜歡的一個老師是某某某? 戶主自己回答的答案是 ABC,如果遇到有人想假冒戶主并私自使用戶主的房產(chǎn)證的時候,在鑒別房產(chǎn)證的真?zhèn)蔚臅r候。他如果在秘密問題這個選項提問和原來的不一樣或者回答的 答案不一樣在經(jīng)過相同的方法處理后就和戶主本身持都的房產(chǎn)證 公文文件 有很大的差別,由此斷定這個數(shù)字證書是假冒的。 對輸入信息的保存實(shí)現(xiàn)代碼 void GenfczDlg::OnSave() { UpdateData()。 CFileDialog save_uk_dlg(FALSE,uk,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,Public fcz files (*.txt)|*.txt)。 if(()==IDOK){ CString file_path=()。 CFile fuk(file_path,CFile::modeCreate|CFile::modeWrite)。 char endline[1]={39。39。}。 ((LPCTSTR)m_name,())。 (endline,1)。 ((LPCTSTR)m_num,())。 (endline,1)。 ((LPCTSTR)m_addr,())。 (endline,1)。 ((LPCTSTR)m_type,())。 (endline,1)。 ((LPCTSTR)m_year,())。 (endline,1)。 `` ((LPCTSTR)m_phone,())。 (endline,1)。 ((LPCTSTR)m_phone,())。 (endline,1)。 ((LPCTSTR)m_phone,())。 (endline,1)。 ()。 } UpdateData(FALSE)。 } 信息安全處理模塊 RSA 密鑰管理模塊 在這個密鑰生成模塊中,該模塊通過 程序中的相關(guān)加密算法來 隨機(jī)生成發(fā)放給用戶的私鑰和房產(chǎn)管理中心留存和私鑰成對的 公 鑰 文件 ,管理中心可以通過這個模塊的生成密鑰按鈕,讓計算機(jī)自動生存公鑰和私鑰,生成相應(yīng)的密鑰以后 公鑰由管理中心統(tǒng)一管理,私鑰文件會發(fā)放給相應(yīng)的戶主。以便戶主在下一個模塊中通過自己的私鑰來對自己的數(shù)字房產(chǎn)證進(jìn)行相應(yīng)的簽名,達(dá)到不可抵賴的作用通過對房密鑰生成模塊的測試,通過該子系統(tǒng)中 RSA 加密算法能夠得出簽名需要用到的簽名私鑰和管理中心用來驗證簽名后 的證件的真?zhèn)蔚墓€。 圖 6 密鑰管理模塊圖 RSA 密碼系統(tǒng)的安全性依賴于大數(shù)分解的難度,一般建議用戶選擇的素數(shù) p和 q 至少為 100 位,則 n=pq 是至少為 200 位的十進(jìn)制數(shù)。因此實(shí)現(xiàn) RSA 算法有必要定義大數(shù)的數(shù)據(jù)結(jié)構(gòu)如圖 6 所示。 密鑰生成,加密和解密涉及到一些大數(shù)的基本運(yùn)算。定義大數(shù)的基本運(yùn)算庫,包括加、減、乘、除、取模運(yùn)算等,其中最重要的模乘運(yùn)算和模冪運(yùn)算。 模冪算法是加密解密的核心算法。計算模冪的一種有效算法是“平方 乘”方法,通過對指數(shù)的二進(jìn)制化來實(shí)現(xiàn)。大數(shù)數(shù)據(jù)的加,減,乘,除,模,模冪等由 CBigInt 這個類來完成,其定義如下: `` 1. CBigInt 類的定義 class CBigInt { public: //大數(shù)在 0x100000000 進(jìn)制下的長度 unsigned m_nLength。 //用數(shù)組記錄大數(shù)在 0x100000000 進(jìn)制下每一位的值 unsigned long m_ulValue[BI_MAXLEN]。 CBigInt()。 ~CBigInt()。 /***************************************************************** 基本操作與運(yùn)算 Mov,賦值運(yùn)算,可賦值為大數(shù)或普通整數(shù),可重載為運(yùn)算符 “=” Cmp,比較運(yùn)算,可重載為運(yùn)算符 “==” 、 “!=” 、 “=” 、 “=” 等 Add,加,求大數(shù)與大數(shù)或大數(shù)與普通整數(shù)的和,可重載為運(yùn)算符 “+” Sub,減,求大數(shù)與大數(shù)或大數(shù)與普通整數(shù)的差,可重載為運(yùn)算符 “ ” Mul,乘,求大數(shù)與大數(shù)或大數(shù)與普通整數(shù)的積,可重載為運(yùn)算符 “*” Div,除,求大數(shù)與大數(shù)或大數(shù)與普通整數(shù)的商,可重載為運(yùn)算符 “/” Mod,模,求大數(shù)與大數(shù)或大數(shù)與普通整數(shù) 的模,可重載為運(yùn)算符 “%” *****************************************************************/ void Mov(unsigned __int64 A)。 void Mov(CBigIntamp。 A)。 CBigInt Add(CBigIntamp。 A)。 CBigInt Sub(CBigIntamp。 A)。 CBigInt Mul(CBigIntamp。 A)。 CBigInt Div(CBigIntamp。 A)。 CBigInt Mod(CBigIntamp。 A)。 CBigInt Add(unsigned long A)。 CBigInt Sub(unsigned long A)。 CBigInt Mul(unsigned long A)。 CBigInt Div(unsigned long A)。 unsigned long Mod(unsigned long A)。 int Cmp(CBigIntamp。 A)。 /***************************************************************** 輸入輸出 Get,從字符串按 10 進(jìn)制或 16 進(jìn)制格式輸入到大數(shù) Put,將大數(shù)按 10 進(jìn)制或 16 進(jìn)制格式輸出到字符串 *****************************************************************/ void Get(CStringamp。 str, unsigned int system=HEX)。 void Put(CStringamp。 str, unsigned int system=HEX)。 int Rab()。//米勒 羅賓算法 CBigInt Euc(CBigIntamp。 A)。 //歐幾里德算法求解同余方程 CBigInt RsaTrans(CBigIntamp。 A, CBigIntamp。 B)。 //反復(fù)平方算法進(jìn)行冪模運(yùn)算 void GetPrime(int bits)。 //產(chǎn)生指定長度的隨機(jī)大素數(shù) CBigInt Gcd(CBigIntamp。 A)。 }。 `` 2. RSA 相關(guān) 算法實(shí)現(xiàn) RSA 算法實(shí)現(xiàn)比較重要的是素性檢測,大隨機(jī)數(shù)的產(chǎn)生,求逆運(yùn)算等,分別由下面幾個函數(shù)來完成 ,下面給出 拉賓米勒算法 。 int CBigInt::Rab() { unsigned i,j,pass。 for(i=0。i550。i++){if(Mod(PrimeTable[i])==0)return 0。} CBigInt S,A,I,K。 (*this)。 [0]。 for(i=0。i5。i++) { pass=0。 (rand()*rand())。 (K)。 while(([0]amp。1)==0) { for(j=0。j。j++) { [j]=[j]1。 if([j+1]amp。1)[j]=[j]|0x80000000。 } if([]==0)。 ((S,*this))。 if((K)==0){pass=1。break。} } if((==1)amp。amp。([0]==1))pass=1。 if(pass==0)return 0。 } return 1。 } 簽名生成模塊 在 簽名產(chǎn)生 模塊中,戶主通過管理中心發(fā)放給他的私鑰,以及他剛剛通過數(shù)字證書生成模塊得到的房產(chǎn)證文件,然后將這兩個文件分別導(dǎo) 入 模塊中,通過生成簽名按鈕及可以得到生成后的數(shù)字簽名。這個簽名由戶主自己保存。密 鑰生成過程時間主要是生成隨機(jī)素數(shù)的時間及計算公鑰和私鑰的模乘法的時間。如圖 7所示 `` 圖 7 簽名生成模塊圖 在數(shù)字簽名過程中要對文件進(jìn)行簽名首先得用對要簽名的文件進(jìn)行數(shù)字摘要處理。在常見的生成數(shù)字摘要的方法有 MD5 和 SHA1,在本設(shè)計中對文件的消息摘要我們是通過 SHA1安全哈希算法來實(shí)現(xiàn)的。下面簡要的介紹安全哈希算法的具體實(shí)現(xiàn)方法和代碼 : SHA1安全哈希算法的實(shí)現(xiàn) typedef struct { /*SHA結(jié)構(gòu)體定義 */ unsigned long state[5]。 unsigned long count[2]。 unsigned char buffer[64]。 } SHA1_CTX。 void SHA1Transform(unsigned long state[5], unsigned char buffer[64])。/*傳輸函數(shù),用于數(shù)據(jù)的轉(zhuǎn)換和傳、送 */ void SHA1Init(SHA1_CTX* context)。 /*初始化,對初始條件進(jìn)行定義和說明 */ void SHA1Update(SHA1_CTX* context, unsigned char* data, unsigned int len)。 /* 中間轉(zhuǎn)換函數(shù) */ void SHA1Final(unsigned char digest[20], SHA1_CTX* context)。 /* 得到最后的哈希表 */ define rol(value, bits) (((value) (bits)) | ((value) (32 (bits)))) /* blk0() and blk() perform the initial expand. */ /* I got the idea of expanding during the round function fro
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1