中郵儲IC卡系統改造工程數據準備子系統_第1頁
中郵儲IC卡系統改造工程數據準備子系統_第2頁
中郵儲IC卡系統改造工程數據準備子系統_第3頁
中郵儲IC卡系統改造工程數據準備子系統_第4頁
中郵儲IC卡系統改造工程數據準備子系統_第5頁
已閱讀5頁,還剩53頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PAGEPAGE6中郵儲IC卡系統改造工程數據準備子系統摘要金融IC卡應用工程是防范銀行卡風險,推動產業升級,提升金融服務,促進政府管理,惠及人民群眾的一項重大社會工程。在2023年3月中國人民銀行發布了《中國金融集成電路(IC)卡規范》(PBOC2.0),并在北京、上海、天津、青島、福州等地開始試點工作。2023年,央行又進一步完善了我國銀行IC卡發展規劃,鼓勵商業銀行發行基于電子錢包功能的IC卡。本文首先分析了國內外銀行IC卡的發展現狀和存在的問題,然后介紹了一種現在國內外正在研究開發的基于IC、磁條合一的卡產品——金融IC卡。在此基礎上,設計了這套金融IC卡系統。設計內容主要包括IC卡前置子系統、數據準備子系統、IC卡管理子系統、渠道接入子系統、后臺接入子系統、監控子系統、數據清理子系統及IC卡安全子系統。本論文主要討論的是數據準備子系統。該子系統利用了某公司TopSmartTeller開發工具,具有靈活、方便、易于維護的特點。主體設計部分基于Linux平臺,采用C語言、ProC和Oracle數據庫,主要實現數據的接收、數據的處理和生成制卡文件三大核心需求。本論文主要解決以下問題:1.對從第三方(安全中心)發來的證書文件的解密及生成制卡文件后的加密。2.定義發卡模板及套用發卡模板進行業務參數的填充。3.轉換后生成IC卡制卡文件。關鍵詞:IC卡,數據處理,制卡文件China'sPostalSavingsBankICCardSystemRenovationDataPreparationSubsystemAbstractFinancialICcardapplicationbankcardprojectisanimportantsocialprojectwhichcanpreventrisks,promoteindustrialupgrading,enhancefinancialservices,promotegovernanceandbenefitpeople.People'sBankofChinapromulgatedthe"Chinafinancialintegratedcircuit(IC)CardSpecification"(PBOC2.0)inMarch2023andbegantomakeexperimentsinBeijing,Shanghai,Tianjin,QingdaoandFuzhou.ThecentralbankimproveddevelopmentprogramofICcardinBankofChinaandencouragedcommercialbankstopublishICCardbasedonelectronicpursefunctions.ThisarticleanalyzesthedevelopmentofdomesticandforeignbanksICcardstatusandexistingproblems,andthenintroducedthefinancialICcardbasedonICandmagneticstripewhichisresearchedanddevelopedathomeandabroad.AfinancialICcardsystemisdesignedonthisbasis.Thisdesignincludespre-subsystem,datapreparationsubsystem,ICcardmanagementsubsystem,thechannelaccesssubsystem,backstageaccesssubsystem,controlsubsystem,datacleaningsubsystemandsecuritysubsystem.Thisessayfocusesonthedatapreparationsubsystem.DatapreparationsubsystemisdevelopedbyTopSmartTellerwhichisflexible,convenientandmaintainable.Thekeypartofthisdesign,whichisbasedonLinux,Clanguage,ProCandOracleDatabase,realizesdatareception,dataprocessingandcard-creatingfilesgenerating.Theproblemssettledinthisthesisareasfollowing:Decryptcertificatefromthethirdpart(Security2.Definecardtemplatesanddoparametersfillingaccordingtothiscardtemplates.3.Generatecard-creatingfilesafterconversion.Keywords:ICcard,DataProcessing,CardFileSystem目錄1緒論 PAGEREFToc294890993\h41.1項目來源 PAGEREFToc294890994\h41.2項目背景 PAGEREFToc294890995\h41.3國內外在該方向的研究現狀及分析 PAGEREFToc294890996\h51.4使用的開發平臺 PAGEREFToc294890997\h52基礎知識 PAGEREFToc294890998\h72.1數據加密算法 PAGEREFToc294890999\h72.2認證中心 PAGEREFToc294891000\h72.3數據完整性 PAGEREFToc294891001\h73系統的分析與設計 PAGEREFToc294891002\h83.1系統邊界設計 PAGEREFToc294891003\h83.1.1本系統定位 PAGEREFToc294891004\h83.1.2系統關聯試圖 PAGEREFToc294891005\h93.2網絡拓撲圖 PAGEREFToc294891006\h93.3系統數據流圖 PAGEREFToc294891007\h103.4應用架構設計 PAGEREFToc294891008\h113.4.1應用架構設計概述 PAGEREFToc294891009\h113.4.2邏輯架構 PAGEREFToc294891010\h113.4.3功能需求與系統模塊對應關系 PAGEREFToc294891011\h123.5IC卡數據準備子系統的功能模塊設計 PAGEREFToc294891012\h123.5.1邏輯結構 PAGEREFToc294891013\h123.5.2處理流程 PAGEREFToc294891014\h133.5.3運行設計 PAGEREFToc294891015\h173.5.4數據結構設計 PAGEREFToc294891016\h193.6模塊采用的技術原理及與其余模塊間的組織架構 PAGEREFToc294891017\h263.7制卡文件生成模塊的具體設計 PAGEREFToc294891018\h273.7.1個人化文件格式接口的定義 PAGEREFToc294891019\h273.7.2主要代碼編寫流程 PAGEREFToc294891020\h313.7.3數據存儲傳輸安全 PAGEREFToc294891021\h313.7.4對數據庫的操作 PAGEREFToc294891022\h32結論 PAGEREFToc294891023\h34參考文獻 PAGEREFToc294891024\h36附錄1 PAGEREFToc294891025\h371緒論隨著國內外金融IC卡業務的改革和發展,新型智能的IC卡技術越來越受到人們的關注。形成一套安全、便捷、可靠、實用的金融IC卡系統也越來越受到人們的重視。本文設計了一套基于IC、磁條合一的卡產品,該軟件系統將實現IC卡的發卡功能及基于小額支付賬戶的業務功能,從而有效的應對各種金融客戶的各種需求,并在安全性方面做出了強有力的保證??梢?,開發一套完善的金融IC卡系統具有重要的現實意義。1.1項目來源該項目為商業項目。1.2項目背景金融IC卡應用工程是防范銀行卡風險,推動產業升級,提升金融服務,促進政府管理,惠及人民群眾的一項重大社會工程。在2023年3月中國人民銀行發布了《中國金融集成電路(IC)卡規范》(PBOC2.0),并在北京、上海、天津、青島、福州等地開始試點工作。2023年,央行又進一步完善了我國銀行IC卡發展規劃,鼓勵商業銀行發行基于電子錢包功能的IC卡。按照人民銀行關于IC卡遷移的整體策略,中國工商銀行、中國農業銀行、中國建設銀行等部分商業銀行和中國銀聯已經率先啟動并正在逐步完成受理系統的改造,今年將逐步開展IC卡受理終端的布放工作。中國銀聯按照人民銀行的部署和要求,完成了跨行交換系統兼容PBOC2.0標準的技術改造。按照人民銀行關于IC卡遷移的整體策略,要求金融IC卡應用工程的階段目標是:2023年底,國有商業銀行均發行金融IC卡,發卡量達到一定規模,主要城市一定數量商戶能夠受理金融IC卡,并完成30%的終端機具改造。2023年底,全國主要商業銀行均發行金融IC卡,發卡量在原有基礎上明顯增加,主要城市多數商戶能夠受理金融IC卡,并完成50%的終端機具改造,能在社保、交通、教育等領域廣泛應用。根據金融IC卡工程行業拓展進度,爭取開始在衛生、文化、旅游等領域使用。2023年,全國所有城市的商戶和公共應用領域均能受理金融IC卡,大多數商業銀行具備發行金融IC卡的能力,已發金融IC卡實現全國聯網通用,初步形成金融IC卡的應用規模和社會效益。因而,為拓展某商業銀行卡業務功能,提高風險防范能力,積極參與人民銀行組織的金融IC卡業務應用推廣,經某集團公司金融信息化工作組批準,啟動某商業銀行IC卡應用工程。1.3國內外在該方向的研究現狀及分析銀行IC卡最早于1985年出現在法國。1995年前后,IC卡在金融領域得到較普遍的應用,當時主要以電子錢包等小額支付為主,除了在少數國家獲得局部成功外,在絕大部分地區的發展狀況不佳。2023年,國際卡組織調整了IC卡的發展重點,開始大力推廣借記/貸記卡的IC化,也就是所謂的EMV遷移。在我國,早在1994年就提出了“磁條卡與智能卡并用,逐步向智能卡過渡”的指導思想。2023年底,中國人民銀行在EMVv3.1.1規范的基礎上組織制定了《中國金融集成電路(IC)卡規范》(又稱PBOC1.0標準)。根據我國銀行卡芯片化計劃要求,人民銀行和中國銀聯2023年正式頒發了PBOC2.0,該規范補充完善電子錢包/存折應用,增加了與EMV標準兼容的借/貸記應用,增加非接觸式IC卡物理特性標準,增加電子錢包擴展應用指南、借/貸記應用個人化指南等內容。1.4使用的開發平臺系統環境搭建:Linux,開發工具某公司TopSmartTeller開發工具、語言Linux平臺下的C和ProC編程、數據庫Oracle11g。如表1-1所示。表1.1軟件環境平臺說明操作系統Linux穩定操作系統平臺支撐中間件Tuxedo10提供成熟完備的消息管理機制以及服務進程管理數據庫Oracle11g包括數據庫存儲、安全、備份文件系統XFS或JSF+LVM采用安全穩定的文件系統是所有平臺的基礎開發工具TopSmartTeller編寫TOPSmartTeller腳本,腳本的格式,STScript的語法,變量,系統函數;配置文件的內容;客戶化函數庫等其他軟件工具,如表1-2所示。表1.2其他軟件工具各環境版本信息中間件名稱生產環境版本開發環境版本測試環境版本GCC操作系統默認版本操作系統默認版本操作系統默認版本VI操作系統默認版本操作系統默認版本操作系統默認版本JDK1.51.51.5ANSIC操作系統默認版本操作系統默認版本操作系統默認版本2基礎知識2.1數據加密算法數據加密算法(DataEncryptionAlgorithm,DEA)是一種對稱加密算法,很可能是使用最廣泛的密鑰系統,特別是在保護金融數據的安全中,最初開發的DEA是嵌入硬件中的。通常,自動取款機(AutomatedTellerMachine,ATM)都使用DEA。它出自IBM的研究工作,IBM也曾對它擁有幾年的專利權,但是在1983年已到期后,處于公有范圍中,允許在特定條件下可以免除專利使用費而使用。1977年被美國政府正式采納。數據加密標準DES:DES的原始思想可以參照二戰德國的恩格瑪機,其基本思想大致相同。傳統的密碼加密都是由古代的循環移位思想而來,恩格瑪機在這個基礎之上進行了擴散模糊。但是本質原理都是一樣的。現代DES在二進制級別做著同樣的事:替代模糊,增加分析的難度。加密原理:DES使用一個56位的密鑰以及附加的8位奇偶校驗位,產生最大64位的分組大小。這是一個迭代的分組密碼,使用稱為Feistel的技術,其中將加密的文本塊分成兩半。使用子密鑰對其中一半應用循環功能,然后將輸出與另一半進行“異或”運算;接著交換這兩半,這一過程會繼續下去,但最后一個循環不交換。DES使用16個循環,使用異或,置換,代換,移位操作四種基本運算。2.2認證中心證明公鑰和其它相關信息同其擁有者相關聯的可信的第三方機構。2.3數據完整性數據不受未經許可的方法變更或破壞的屬性。3系統的分析與設計本章的編寫目的是遵循應用軟件設計的基本原則并選擇合適的設計方法,對某銀行IC卡系統的總體框架進行描述,包括系統的劃分、各子系統及其組成模塊的功能、屬性及其相互間的接口關系,以及在進一步細化時所要考慮的性能、運行環境和安全性等諸方面的約束,同時對系統所包括的各子系統的邏輯架構、模塊組成、模塊之間的關系、物理設計、內部/外部數據結構等進行深入展開,為后續各子系統的詳細設計提供設計基礎和依據。3.1系統邊界設計系統的邊界設計包括以下幾個內容。3.1.1本系統定位IC卡系統是一個基于某商業銀行核心儲蓄系統的外掛系統,借助某商業銀行儲蓄系統已有的賬戶管理服務、會計核算服務、資金清算服務、公共管理服務實現IC卡的發卡及IC卡相關業務的受理?;谝陨舷到y定位,在系統建設中遵循以下原則:(1)IC卡系統不建設單獨的受理渠道,利用某商業銀行現有渠道開展業務;(2)IC卡前置系統不單獨建立機構信息、不進行機構的權限管理;某商業銀行儲蓄系統每日日終將機構的全量信息同步給IC卡前置系統;(3)IC卡前置系統與某商業銀行儲蓄省中心采用總對分的連接方式,即IC卡前置系統直接與31個儲蓄省中心連接;并根據終端所在省將交易發往對應的儲蓄受理省中心,對于跨省交易,受理某商業銀行儲蓄省中心通過儲蓄全國中心將交易發往相應的省中心進行處理;(4)IC卡前置系統與包括儲蓄網點前置在內的各渠道前置直連;(5)對于涉及小額支付賬戶的聯機交易,由渠道前置將交易發往IC卡前置系統,由IC卡前置系統調用受理省儲蓄省中心的相應接口進行處理,涉及跨省交易的由受理省省中心發給儲蓄全國中心,參照現有行內跨省異地轉賬交易流程處理;對于傳統借記交易,渠道前置先發交易請求到IC卡前置系統進行驗證,IC卡前置返回驗證結果,若驗證通過,渠道前置將交易發往儲蓄省中心進行處理;(6)IC卡系統不建立單獨的憑證管理和尾箱管理,憑證管理及尾箱管理利用儲蓄系統現有的方式完成,IC卡系統調用儲蓄系統提供的相應接口完成業務處理。3.1.2系統關聯試圖IC卡系統關聯試圖如圖3.1所示。圖3.1IC卡系統關聯試圖上圖描述了IC卡系統的組成及與關聯系統的關系,其中綠色為需要新建或改造的系統。IC卡系統由后臺接入子系統、監控子系統、安全管理子系統、IC卡前置子系統、數據準備子系統、安全管理中心、數據清理子系統、渠道接入子系統、管理子系統、個人化發卡系統組成;其中安全管理中心及個人化發卡系統由其它廠商建設。3.2網絡拓撲圖網絡拓撲圖如圖3.2所示。全國中心系統:包括IC卡交換前置、IC卡應用系統、數據準備系統、管理終端服務器和安全管理中心。圖3.2網絡拓撲圖3.3系統數據流圖系統數據流圖如圖3.3所示。圖3.3系統數據流圖上圖描述的是在交易過程中各個子系統之間及與外系統之間的數據流向,其中藍色箭頭顯示的是制卡的數據流向,綠色箭頭顯示是聯機交易的數據流向,流程說明如下:制卡數據流向:(1)業務管理人員通過控制臺進行卡片管理,添加新的卡品種、卡類別及制卡模版;(2)儲蓄系統生成卡的磁條信息并一文件的方式發送給后臺接入子系統;(3)后臺接入子系統將磁條信息文件轉發給數據準備子系統,并登記相應的批處理任務;(4)數據準備子系統訪問安全管理中心獲取密鑰及證書等信息,生成制卡文件;(5)數據準備子系統通過渠道接入子系統將制卡文件發往個人化發卡系統;(6)個人化發卡系統收到制卡文件后進行相應處理并完成制卡。3.4應用架構設計應用架構設計包括以下幾個內容。3.4.1應用架構設計概述在軟件邏輯結構設計中,針對IC卡系統所需要實現的業務、技術和管理方面的功能按照架構層次進行了歸納,在系統劃分上需要遵循如下原則:(1)系統層次清晰,重用部分和擴展部分隔離,底層系統向上層系統提供服務;(2)系統邏輯獨立,兼顧物理獨立,保證系統能夠靈活部署;(3)兼顧近期目標和遠期規劃,在符合整體系統規劃和趨勢的前提下,實現系統功能。3.4.2邏輯架構按照系統所實現的業務功能、支撐業務功能而提供的技術功能以及管理上的要求,IC卡系統邏輯上可以分為:IC卡前置子系統、IC卡數據準備子系統、IC卡管理子系統、渠道接入子系統、后臺接入子系統、監控子系統、數據清理子系統、IC卡安全子系統。其中,IC卡數據準備子系統主要負責在保證數據安全和私密性的前提下,對PBOC2.0借記IC卡個人化所需要的各種數據進行生成,轉換,替換和組合等操作,最終形成可以為個人化系統識別的個人化文件。包括數據域管理、模版管理、DGI(DataGroupInterface)數據分組管理、制卡文件生成四部分。3.4.3功能需求與系統模塊對應關系功能需求與系統模塊對應關系如表3.1所示。模塊名稱子模塊功能點編號功能點對應設計功能模塊業務管理卡片管理IC-MNG-11制卡流程概述卡片管理IC-MNG-12卡產品定義IC-MNG-13個人化格式配置管理IC-MNG-14IC卡模板管理IC-MNG-15IC卡數據域管理IC-MNG-16DGI數據分組管理IC-MNG-17數據準備處理階段查詢IC-MNG-18數據準備文件補發表3.1功能需求與系統模塊對應關系表3.5IC卡數據準備子系統的功能模塊設計IC卡數據準備子系統的功能模塊設計包括以下幾個方面。3.5.1邏輯結構IC卡數據準備子系統邏輯結構,如圖3.4所示。圖3.4IC卡數據準備子系統邏輯結構IC卡模板管理模塊由控制臺發起,包括模板信息維護以及模板TLV(TagLengthValue)配置,負責數據準備相關模板的維護以及模板與TLV數據域的關聯維護,生成制卡文件的過程中將使用此模塊中配置好的模板生成數據。IC卡數據域管理模塊由控制臺發起,負責維護與卡模板關聯的TLV數據域,包括數據域的增刪改查,TLV數據域根據銀聯規范配置,發卡行也可自行定制數據域,與客戶信息相關的數據域數據(磁條信息,姓名,卡號等)由儲蓄系統提供,與安全相關的數據域數據(公鑰等)由安全中心提供,與應用相關數據域數據(AID等)由數據準備子系統提供。DGI數據分組管理模塊由控制臺發起,包括個人化格式配置信息維護以及個人化格式DGI配置維護,生成制卡文件的過程中將使用此分組數據將模板數據進行數據分組產生給個人化廠商的個人化文件。制卡文件生成模塊由后臺進程發起,負責根據儲蓄制卡文件,以上配置的數據準備模板以及向安全中心請求的證書生成個人化文件給個人化廠商。以上四個模塊均訪問數據準備數據庫,制卡文件生成模塊使用其他三個模塊配置的信息生成文件。3.5.2處理流程處理流程包括IC卡模板管理模塊、IC卡數據域管理模塊、DGI數據分組管理模塊、制卡文件生成模塊。1)IC卡模板管理模塊模板信息維護流程,如圖3.5所示。圖3.5IC卡模板管理模塊維護流程圖流程說明:(1)接收頁面發來的請求;(2)檢查操作員是否有執行模板信息維護的權限,如沒有,返回錯誤信息至頁面并顯示;(3)更新IC卡模板表(增加刪除修改);(4)記錄交易流水表;(5)返回成功信息至頁面。模板TLV配置流程,如圖3.6所示。圖3.6模板TLV配置流程圖流程說明:(1)接收頁面發來的請求;(2)檢查操作員是否有執行模板TLV配置的權限,如沒有,返回錯誤信息至頁面并顯示;(3)更新IC卡模板配置表(增加刪除修改);(4)記錄交易流水表;(5)返回成功信息至頁面。2)IC卡數據域管理模塊IC卡數據域管理模塊如圖3.7所示。圖3.7IC卡數據域管理模塊流程圖流程說明:(1)接收頁面發來的請求;(2)檢查操作員是否有執行IC卡基礎域配置的權限,如沒有,返回錯誤信息至頁面并顯示;(3)更新IC卡基礎域配置表(增加刪除修改);(4)記錄交易流水表;(5)返回成功信息至頁面。3)DGI數據分組管理模塊個人化格式配置信息維護流程,如圖3.8所示。圖3.8個人化格式配置信息維護流程圖流程說明:(1)接收頁面發來的請求;(2)檢查操作員是否有執行個人化格式配置信息維護的權限,如沒有,返回錯誤信息至頁面并顯示;(3)更新個人化格式配置表(增加刪除修改);(4)記錄交易流水表;(5)返回成功信息至頁面。個人化格式DGI配置維護流程,如圖3.9所示。圖3.9個人化格式DGI配置維護流程圖流程說明:(1)接收頁面發來的請求;(2)檢查操作員是否有執行個人化格式DGI配置維護的權限,如沒有,返回錯誤信息至頁面并顯示;(3)更新個人化格式DGI配置表(增加刪除修改);(4)記錄交易流水表;(5)返回成功信息至頁面。4)制卡文件生成模塊制卡文件生成模塊如圖3.10所示。圖3.10制卡文件生成模塊流程圖流程說明:(1)掃描通知表,檢查是否有新文件;(2)如有新文件,取儲蓄制卡文件;(3)對儲蓄制卡文件使用KEK(儲蓄與數據準備同步密鑰)解密入庫;(4)向安全中心申請證書文件(申請證書文件明文,安全中心返回證書用KEK加密);(5)調用安全子系統將KEK加密的證書文件轉為TK加密證書;(6)調用安全子系統用磁道加密密鑰對磁道信息進行加密;(7)使用TK加密證書文件、儲蓄制卡文件解密后入庫的數據、根據模板生成的數據準備數據生成個人化文件;(8)調用安全子系統對文件哈希并用哈希加密密鑰對哈希值加密添加至文件尾;(9)傳輸個人化文件至個人化系統,并返回掃描通知表。3.5.3運行設計IC卡數據準備子系統運行設計圖如圖3.11所示。圖3.11IC卡數據準備子系統運行設計圖數據準備運行分為兩部分,控制臺配置部分與IC卡系統后臺部分:控制臺配置部分:(1)IC卡數據域維護應用增加IC卡數據域(根據銀聯規范);(2)IC卡模板維護應用增加應用模板;(3)IC卡模板維護應用配置模板與IC卡數據域的關聯關系;(4)IC卡數據分組維護應用增加DGI數據分組信息;(5)IC卡數據分組維護應用增加DGI數據分組與IC卡數據域的關聯關系;IC卡系統后臺部分:(1)輪詢線程掃描通知表;(2)取儲蓄制卡文件至IC卡系統后臺;(3)解密入庫并調用生成個人化文件API;(4)生成個人化文件API向安全中心請求證書,安全中心返回證書文件;(5)調用安全子系統將KEK加密證書轉為TK加密證書(6)根據證書文件,WEB服務器應用中的應用配置以及入庫的儲蓄制卡文件生成給個人化系統的個人化文件;(7)將個人化文件傳輸至個人化系統。3.5.4數據結構設計數據機構設計包括數據關系視圖與定義的各種表結構。表結構包括:1)模板信息表TBLINFTEMPLATEID2)模板配置表TBLINFTEMPLATECHG3)個人化格式配置表TBLICFORMATCFG4)個人化格式DGI配置表TBLICDGICFG5)IC卡基礎域配置表TBLINFFLDID6)數據準備預處理表TBLDATCARDPROC7)BUF模板映射表TBLINFBUFTEMPLATEMAP8)BUF配置表TBLINFBUFCHG9)BUF字段表TBLINFBUFFLD10)BUF信息表TBLINFBUFID(1)數據關系視圖數據關系視圖如圖3.12所示。圖3.12IC卡數據準備子系統數據關系視圖(2)數據結構1.模板信息表TBLINFTEMPLATEID,如表3.2所示。主鍵:TEMPLATEID2表3.2模板信息表字段名稱類型長度說明備注缺省值可空TEMPLATEID2VARCHAR27應用模板編號NTEMPLATENAMEVARCHAR220模板名稱NTEMPLATEFLAGVARCHAR220模板屬性NRECUPDUSRIDCHAR10修改的用戶標識NRECUPDTSCHAR14修改時間NRECCRTTSCHAR14創建時間NRESERVEVARCHAR230保留NRESERVE1VARCHAR230保留1NRESERVE2VARCHAR260保留2NRESERVE3VARCHAR2100保留3N2.模板配置表TBLINFTEMPLATECHG,如表3.3所示。主鍵:TEMPLATEID2,FLDID表3.3模板配置表字段名稱類型長度說明備注缺省值可空TEMPLATEID2VARCHAR27應用模板編號NFLDIDCHAR4模板字段編號NFLDENCFLAGCHAR1加密標志0:不加密1:加密NFLDDFLVALFLAGCHAR1使用缺省值標志0:不使用1:使用NDFLVALVARCHAR2256缺省值NFLDNESTFLAGCHAR1嵌套域標志0:非嵌套1:嵌套NFLDUPFLAGCHAR1上級字段標志NUPFLDIDCHAR4上級字段編號NRECUPDUSRIDCHAR10修改的用戶標識NRECUPDTSCHAR14修改時間NRESERVEVARCHAR230保留NRESERVE1VARCHAR230保留1NRESERVE2VARCHAR260保留2NRESERVE3VARCHAR2100保留3N3.個人化格式配置表TBLICFORMATCFG,如表3.4所示。主鍵:PERFORMATID表3.4個人化格式配置表字段名稱類型長度說明備注缺省值可空PERFORMATIDCHAR4個人格式編號NPERFORMATNMVARCHAR264名稱NRESERVE1VARCHAR230保留1NRESERVE2VARCHAR260保留2NRESERVE3VARCHAR2100保留3NRECUPDUSRIDCHAR10修改的用戶標識NRECCRTTSCHAR14創建時間NRECUPDTSCHAR14修改時間N4.個人化格式DGI配置表TBLICDGICFG,如表3.5所示。主鍵:PERFORMATID,PERDGISEQ表3.5個人化格式DGI配置表字段名稱類型長度說明備注缺省值可空PERFORMATIDCHAR4個人格式編號NPERDGISEQINTEGERDGI順序號NDGITLVSEQINTEGERDGITLV序列號NFLDID3INTEGER字段IDNDGIFLDFLAGVARCHAR2100DGITLV字段標志NRESERVE1VARCHAR230保留1NRESERVE2VARCHAR260保留2NRESERVE3VARCHAR2100保留3NRECUPDUSRIDCHAR10修改的用戶標識NRECCRTTSCHAR14創建時間NRECUPDTSCHAR14修改時間N5.IC卡基礎域配置表TBLINFFLDID,如表3.6所示。主鍵:FLDID2表3.6IC卡基礎域配置表字段名稱類型長度說明備注缺省值可空FLDID2CHAR4字段編號NFLDTAGCHAR4字段TagNFLDMAXLENNUMBER字段最大長度NFLDLENCHANGFLAGCHAR1長度可變標志0:不可變1:可變NFLDFORMNUMBER字段格式0:n(數字)1:cn(壓縮數字)2:b(二進制)3:an(字母數字)4:ans(特殊字母數字)5:var.(可變)NRECUPDUSRIDCHAR10修改的用戶標識NRECUPDTSCHAR14修改時間NRECCRTTSCHAR14創建時間NRESERVEVARCHAR230保留NRESERVE2VARCHAR260保留2NRESERVE3VARCHAR2100保留3N6.數據準備預處理表TBLDATCARDPROC,如表3.7所示。主鍵:CARDNO表3.7數據準備預處理表字段名稱類型長度說明備注可空CARDNOCHAR19卡號NCARDPROCFLAGNUMBER處理標志NCARDPRODUCTIDCHAR8卡產品代碼NCARDPRODIDCHAR4卡商編號NCARDISSSTYLECHAR1發卡方式NCUSTIDTYPECHAR2客戶證件類型01:身份證02:戶口簿03:軍人身份證件04:武裝警察身份證件05:港澳居民往來內地通行證06:臺灣回鄉證07:本國護照08:外國護照09:臨時身份證10:軍人士兵證11:軍人文職干部證12:武警士兵證13:其他等。NCUSTIDCHAR30客戶證件號NCUSTNAMEVARCHAR264客戶姓名NCUSTADDRVARCHAR2128客戶地址NCUSTTELNOCHAR30客戶聯系NAPPLYDATECHAR8申請日期NENDDATECHAR8失效日期NSENDNUMNUMBER發卡次數NSERVIDCHAR3服務代碼NCARDCVVCHAR3CVVNCARDCVV2CHAR3CVV2NSECONDTRACKDATAVARCHAR240二磁道數據NSENDBRBRHCHAR8發卡網點NCARDPROCSTATCHAR2制卡狀態NRESERVEVARCHAR230保留NRESERVE1VARCHAR230保留1NRESERVE2VARCHAR260保留2NRESERVE3VARCHAR2100保留3N7.BUF模板映射表TBLINFBUFTEMPLATEMAP,如表3.8所示。主鍵:BUFID3,TEMPLATEID表3.8BUF模板映射表字段名稱類型長度說明備注缺省值可空BUFID3NUMBERBUF編號NTEMPLATEIDNUMBER應用模板編號NBUFFLDIDNUMBERBUF字段編號NFLDIDCHAR4模板字段編號NRECUPDUSRIDCHAR10修改的用戶標識NRECUPDTSCHAR14修改時間NRECCRTTSCHAR14創建時間NRESERVEVARCHAR214保留NRESERVE1VARCHAR230保留1NRESERVE2VARCHAR260保留2NRESERVE3VARCHAR2100保留3N8.BUF配置表TBLINFBUFCHG,如表3.9所示。主鍵:BUFID2表3.9BUF配置表字段名稱類型長度說明備注缺省值可空BUFID2NUMBERBUF編號NBUFFLDSEQNUMBERBUF字段序號NBUFFLDIDNUMBERBUF字段編號NRECUPDUSRIDCHAR10修改的用戶標識NRECUPDTSCHAR14修改時間NRECCRTTSCHAR14創建時間NRESERVECHAR30保留NRESERVE1VARCHAR230保留1NRESERVE2VARCHAR260保留2NRESERVE3VARCHAR2100保留3N9.BUF字段表TBLINFBUFFLD,如表3.10所示。主鍵:BUFFLDID表3.10BUF字段表字段名稱類型長度說明備注缺省值可空BUFFLDIDNUMBERBUF字段編號NBUFFLDNMVARCHAR2256BUF字段名稱NBUFFLDTYPENUMBERBUF字段類型NBUFFLDLENNUMBERBUF字段長度NRECUPDUSRIDCHAR10修改的用戶標識NRECUPDTSCHAR14修改時間NRECCRTTSCHAR14創建時間NRESERVEVARCHAR230保留NRESERVE1VARCHAR230保留1NRESERVE2VARCHAR260保留2NRESERVE3VARCHAR2100保留310.BUF信息表TBLINFBUFID,如表3.11所示。主鍵:BUFID表3.11BUF信息表字段名稱類型長度說明備注缺省值可空BUFIDNUMBERBUF編號NBUFNAMEVARCHAR2256BUF名稱NRECUPDUSRIDCHAR10修改的用戶標識NRECUPDTSCHAR14修改時間NRECCRTTSCHAR14創建時間NRESERVEVARCHAR230保留NRESERVE1VARCHAR230保留1NRESERVE2VARCHAR260保留2NRESERVE3VARCHAR2100保留3N3.6模塊采用的技術原理及與其余模塊間的組織架構IC卡模板管理模塊由控制臺發起,包括模板信息維護以及模板TLV配置,負責數據準備相關模板的維護以及模板與TLV數據域的關聯維護,生成制卡文件的過程中將使用此模塊中配置好的模板生成數據。IC卡數據域管理模塊由控制臺發起,負責維護與卡模板關聯的TLV數據域,包括數據域的增刪改查,TLV數據域根據銀聯規范配置,發卡行也可自行定制數據域,與客戶信息相關的數據域數據(磁條信息,姓名,卡號等)由儲蓄系統提供,與安全相關的數據域數據(公鑰等)由安全中心提供,與應用相關數據域數據(AID等)由數據準備子系統提供。DGI數據分組管理模塊由控制臺發起,包括個人化格式配置信息維護以及個人化格式DGI配置維護,生成制卡文件的過程中將使用此分組數據將模板數據進行數據分組產生給個人化廠商的個人化文件。制卡文件生成模塊由后臺進程發起,負責根據儲蓄制卡文件,以上配置的數據準備模板以及向安全中心請求的證書生成個人化文件給個人化廠商。以上四個模塊均訪問數據準備數據庫,制卡文件生成模塊使用其他三個模塊配置的信息生成文件。3.7制卡文件生成模塊的具體設計制卡文件生成模塊就是使用TK加密證書文件、儲蓄制卡文件解密后入庫的數據、根據模板生成的數據準備數據來生成個人化文件。其中最關鍵的技術就是個人化文件格式接口的定義、數據庫的操作和與數據安全性相關的加密算法的應用,它們直接關系到生成個人化文件的準確性、效率與安全性。3.7.1個人化文件格式接口的定義個人化文件格式接口規范如下。(1)文件格式:文件采用二進制數據方式,一批卡數據一個文件。(2)文件名規范:日期+卡種(8位)+機構代碼(9位)+批次號。(3)文件構成:如圖3.13所示。圖3.13文件構成(4)文件具體格式說明1)一個文件包含一批卡數據2)每張卡數據包含3大部分數據:卡面數據、磁條數據、IC卡數據3)IC卡數據必須支持多應用4)每個應用數據包含3大部分數據:DGI分組數據、加密的DGI清單、日志DGI清單5)每一張卡數據必須帶MAC,MAC的計算方法為:將整張IC卡數據按照8字節分組,不足8字節的后補0,從第一個組開始,對下一個組進行異或,異或的結果再和下一個分組異或,直到和最后一個分組異或得到的值使用KEK進行ECB加密得到8個字節作為MAC值6)卡面數據、磁條數據、IC卡數據分別以“MIC+LEN+數據內容”格式進行表示,MIC的定義為定長6個字節字符:(1)MIC=“xxxPRN”表示卡面數據(2)MIC=“xxxMAG”表示磁條數據(3)MIC=“xxxEMV”表示IC數據例如,在對模板數據初始化得過程中,對卡數據的3大部分數據的初始化為:/*填充卡面數據*/fprintf(fp,"%s","000PRN");cardlen+=6;miclenpos=ftell(fp);miclen=0;fwrite((char*)&miclen,sizeof(int),1,fp);cardlen+=4;rc=dpprngenerate(pDpManager,fp);if(rc<0){OlBatLog(OLBATTRACEERROR,"dpprngenerateerror%d\n",rc);return-1;}cardlen+=rc;miclen=dpintconv(rc);curpos=ftell(fp);fseek(fp,miclenpos,SEEKSET);//定位讀寫位置fwrite((char*)&miclen,sizeof(int),1,fp);fseek(fp,curpos,SEEKSET);/*填充磁條數據*/fprintf(fp,"%s","000MAG");cardlen+=6;miclenpos=ftell(fp);miclen=0;fwrite((char*)&miclen,sizeof(int),1,fp);cardlen+=4;rc=dpmaggenerate(pDpManager,fp);if(rc<0){OlBatLog(OLBATTRACEERROR,"dpmaggenerateerror%d\n",rc);return-1;}cardlen+=rc;miclen=dpintconv(rc);curpos=ftell(fp);fseek(fp,miclenpos,SEEKSET);//定位讀寫位置fwrite((char*)&miclen,sizeof(int),1,fp);fseek(fp,curpos,SEEKSET);/*填充IC數據*/fprintf(fp,"%s","000EMV");cardlen+=6;miclenpos=ftell(fp);miclen=0;fwrite((char*)&miclen,sizeof(int),1,fp);cardlen+=4;rc=dpicgenerate(pDpManager,kicid,fp);if(rc<0){OlBatLog(OLBATTRACEERROR,"dpicgenerateerror%d\n",rc);return-1;}cardlen+=rc;miclen=dpintconv(rc);curpos=ftell(fp);fseek(fp,miclenpos,SEEKSET);//定位讀寫位置fwrite((char*)&miclen,sizeof(int),1,fp);fseek(fp,curpos,SEEKSET);//定位讀寫位置fpend=ftell(fp);OlBatLog(OLBATTRACEERROR,"fpcardseq=[%d]end=[%d]",cardseqint,fpend);3.7.2主要代碼編寫流程生成個人化格式文件的代碼編寫流程:變量初始化、獲取批量信息參數、獲取批次詳細信息、生成個人化格式文件、更新制卡批次信息表、插入制卡批次信息表、插入批量請求信息表。其中最重要的是生成個人化格式文件這部分的代碼編寫。該部分獨立為一個函數,名為genPerFile()。該函數的編寫流程是:變量初始化、獲取批量信息參數、內存初始化、加載默認值、打開文件、取卡總數、寫文件頭、函數注冊、取卡余額上限、電子現金余額上限、取卡號、取卡的數據域。3.7.3數據存儲傳輸安全(1)傳輸交易信息時采用MAC認證來保證數據傳輸的完整性和鑒別消息來源,以保證數據傳輸的可靠性。采用美國國家標準局公布的信息鑒別碼(MAC)算法(ANSIX9.9)。在傳輸交易信息時交易的發起方根據交易信息生成信息鑒別碼MAC并隨交易信息發送到交易接受方,交易接受方對信息鑒別碼進行驗證,以保證信息傳輸的可靠性和完整性,并確認消息的正確來源,消息在各級的傳送過程中,每到一個節點都要鑒別MAC,然后重新計算MAC,放入待發送的消息。換言之,每一段通信線路上傳送的消息都將受到真偽的鑒別。傳輸文件時采用MAC認證來保證數據傳輸的完整性。采用美國國家標準局公布的信息鑒別碼(MAC)算法(ANSIX9.9)。在傳輸文件時文件的發送方根據文件信息生成信息鑒別碼MAC并隨文件通知發送到接收方,接收方對信息鑒別碼進行驗證,以保證文件傳輸的可靠性和完整性。因此,對模板數據進行個人化時,在卡數據后都添加了MAC:/*在卡數據后添加MAC*/fprintf(fp,"%s","FFFFFFFF");cardlen+=8;cardlen=dpintconv(cardlen);curpos=ftell(fp);fseek(fp,cardlenpos,SEEKSET);//定位讀寫位置fwrite((char*)&cardlen,sizeof(int),1,fp);fseek(fp,curpos,SEEKSET);//定位讀寫位置(2)數據準備系統對個人化文件哈希并使用文件哈希密鑰HK1生成密文,并添加至文件末尾:/*補寫Hash值*/rc=fflush(fp);OlBatLog(OLBATTRACEERROR,"fpfflushrc=[%d]",rc);memset(buf,0,sizeof(buf));fseek(fp,fpstart,SEEKSET);//定位讀寫位置OlBatLog(OLBATTRACEERROR,"fpcardseq=[%d]ftell=[%d]",cardseqint,ftell(fp));rc=fread(buf,1,fpend-fpstart,fp);OlBatLog(OLBATTRACEERROR,"fpcardseq=[%d]diff=[%d],rc=[%d]",cardseqint,fpend-fpstart,rc);SHAHash(buf,sShaBuf,fpend-fpstart);//對文件進行哈希的函數Trace(9,FILE,LINE,sShaBuf,20);//記錄日志的函數OlBatLog(OLBATTRACEERROR,"fpcardseq=[%d]hash=[%s]",cardseqint,sShaBuf);fseek(fp,fpend,SEEKSET);//定位讀寫位置fwrite(sShaBuf,sizeof(char),8,fp);3.7.4對數據庫的操作本系統對數據庫的操作都是利用在Pro*C程序中嵌入SQL語句,利用這些SQL語句完成動態的建立、修改和刪除數據庫中的表,查詢、插入、修改、刪除數據庫表中的行,實現事務的提交和回滾。例如,對表tblolbatreqdtl的操作。打開表:OpenCursorTBLOLBATREQDTL(){};提取表:FetchCursorTBLOLBATREQDTL(){};關閉表:CloseCursorTBLOLBATREQDTL(){};對表數據的操作:DbsTBLOLBATREQDTL(intifunc,tblolbatreqdtldef*pTBLOLBATREQDTL){……switch(ifunc){caseDBSINIT:……//初始化caseDBSSELECT:……//查詢caseDBSLOCK:……//鎖定caseDBSUPDATE:……//更新caseDBSDELETE:……//刪除caseDBSINSERT:……//插入default:return(543);}結論本論文分析了當前國內外金融IC卡的發展現狀和研發智能IC卡的必要性,以及傳統磁條IC卡技術的局限性。為了突破這一不足,引入了智能IC卡這一先進技術,設計了符合PBOC2.0標準的金融IC卡系統。該系統利用Linux平臺下的C語言編程及Proc編程,以Oracle為數據庫,以Tuxedo為中間件而設計開發的新產品。本系統具有以下優點:1.標準性:系統建設符合《中國金融集成電路(IC)卡規范》、《中國銀聯銀行卡聯網聯合技術規范》等規范的規定。實現報文格式接口、模塊交互接口、代碼信息的標準化,使交易的裝配更加容易,便于系統易維護,可移植,能擴展。2.先進性:系統采用符合信息技術發展趨勢的先進技術。軟件系統的選擇與開發在滿足業務需求的基礎上具有易改造、易升級、易操作、易維護等特點。3.可擴展性:在軟件設計方面考慮了未來業務發展和管理的需要,方便新業務和新需求的擴展和支持,滿足未來IC卡業務發展的需要。4.穩定性:IC卡業務系統能確保系統平穩運行,滿足高峰交易處理的需要。能適應日終批處理、瞬間浪涌業務、報表集中生成等特殊情況。IC卡應用工程的改造工作能充分考慮現有系統的穩定性,對原生產系統的改造應減少到最低限度。5.安全性:系統是建立在成熟穩定的硬件環境和應用軟件基礎上的,通過完善的備份恢復策略、安全控制機制、可靠的運行管理監控和故障處理手段來保障系統的運行穩定、安全。6.可維護性:系統的可維護性將決定系統的運行成本。在設計中應充分考慮系統的運行監控,提供方便靈活的管理手段和工具。存在以下局限性:1.該金融IC卡仍是基于IC、磁條二合一的卡產品,并非真正意義上的智能IC卡。在今后的研發方向上,要設計開發出純芯片控制的金融IC卡,使IC卡更加智能化,簡單化。2.生成個人化文件部分需要進一步完善和改進,特別是對卡片內部風險管理數據的檢查需要優化,模式匹配過程需要進一步提高實時性和準確性。3.在文件交互過程中,對數據的保密性上應進一步改進和完善。應探索出更加安全、穩健的數據或文件加密算法來保證文件和數據在交互過程中的保密性。參考文獻[1]徐陽EMV遷移對中國銀行卡發展的影響及應對策略[J].經濟縱橫2023(5),91-94.[2]陳勇金融IC卡的專業應用[J].中國信用卡2023,(6),64-67.[3]王金紅走進金融IC卡[J].西部金融2023,(5),82-82.[4]侯江濤建設銀行長沙地區金融IC卡方案[J].中國信用卡2023,(7),49-52.[5]唐劍冰,陳海斌推進廣西金融IC卡發展的思考[J].區域金融研究2023,(5),54-56.[6]陳勇金融IC卡的密鑰管理,中國信用卡[J]2023,(10),64-67.[7]鄭潔我國金融IC卡發展現狀探究[J],中國信用卡[J]2023,(18).54-58[8]張妙銀聯發力金融IC卡推廣[J].華南金融電腦2023,(7),13-15[9]李曉楓中國金融IC卡戰略的若干思考[J].中國防偽報道2023,(11).55-58[10]Sanchez-Reillo,R.AchievingSecurityInIntegratedCircuitCardApplicationsRealityOrDesire[J].SecurityTechnology2023,(35),197-201附錄1外文資料翻譯譯文:你的首個MFC應用程序現在來建立你的首個MFC應用程序。還有什么能比用一個顯示“你好,MFC”的窗體更適合作為開端呢?基于克尼漢·布萊恩和里奇·丹尼斯的《C程序設計語言》中的經典不變的“Hello,World”項目,我稱這種極小的項目為“Hello”,包含了使用MFC編寫的應用程序窗體,展示了基本原則。除此之外,你將親自見證MFC的CWinApp類和CFrameWnd類是如何獲得并插入到這個程序中的。你也將學到非常重要的CPaintDC類,在窗體中它充當著文本和圖形回應WMPAINT消息的管道。最后,你將為它引入MFC消息影射機制,用以關聯準備辦理應用程序和成員函數的那些消息。圖1-3列出了Hello的源代碼。Hello.h包含了兩個派生類的說明。Hello.cpp包含了那些類的具體實現方案。對于C++程序員而言,一般把類的定義寫在.h文件和.cpp文件中。在這本書里我們將貫徹這個優良傳統。對于大型應用程序,它可能包含數以十計或者可能數以百計的類,這樣也有利于從源代碼上分離類的聲明和實現。雖然在本書的前幾章中這樣是夸張的,但是以后當我們開始處理文檔和視圖時,我們將為每一個類寫一個特定的.h文件和.cpp文件。在書后面的CD中,你將在Chap01文件夾中找到Hello.h和Hello.cpp的復制品,還有一個文件夾包含了一個可執行文件Hello.exe的副本。圖1-3TheHelloapplication.Hello.h:classCMyApp:publicCWinApp{public:virtualBOOLInitInstance();};classCMainWindow:publicCFrameWnd{public:CMainWindow();protected:afxmsgvoidOnPaint();DECLAREMESSAGEMAP()};Hello.cpp:#include<afxwin.h>#include"Hello.h"CMyAppmyApp;///////////////////////////////////////////////////////////////////////////CMyAppmemberfunctionsBOOLCMyApp::InitInstance(){mpMainWnd=newCMainWindow; mpMainWnd->ShowWindow(mnCmdShow);mpMainWnd->UpdateWindow();returnTRUE;}///////////////////////////////////////////////////////////////////////////CMainWindowmessagemapandmemberfunctionsBEGINMESSAGEMAP(CMainWindow,CFrameWnd)ONWMPAINT()ENDMESSAGEMAP()CMainWindow::CMainWindow(){Create(NULL,T("TheHelloApplication"));}voidCMainWindow::OnPaint(){CPaintDCdc(this);CRectrect;GetClientRect(&rect);dc.DrawText(T("Hello,MFC"),-1,&rect,DTSINGLELINE|DTCENTER|DTVCENTER);}圖1-4顯示了Hello的輸出。當你運行這個應用程序時,注意這個窗體的功能完整性;你可以移動它,調整它的大小,最小化,最大化,關閉。當你調整它的大小時,“Hello,MFC”將重新出現在屏幕中心。大部分Hello的功能來自窗體。窗體,比如說,窗體的繪制外表,或者非工作區域:標題欄,標題欄的按鈕,窗體邊框。你有責任建立窗體并且處理指定的WMPAINT消息,全部或者部分的窗體內置和工作區需要重置。讓我們通過查看源代碼來看看Hello是怎樣運轉的。圖1-4TheHellowindow.應用程序對象MFC應用程序的核心基于CWinApp類。CWinApp類提供消息循環機制,檢索消息并發送到應用程序窗口。它也包括關鍵的虛擬函數,可以被用戶重寫到應用程序行為中。當你引入頭文件Afxwin.h,CWinApp以及其他MFC類使你的應用程序進入狀態。一個MFC應用程序有且僅有一個應用程序對象,它必須全局聲明,所以它將在應用程序開端實例化。Hello應用程序對象被命名為CMyApp.通過這個聲明,它在Hello.cpp中實例化。CMyAppmyApp;CMyApp出現在Hello.h中的類聲明:classCMyApp:publicCWinApp{public:virtualBOOLInitInstance();};CmyApp類不聲明數據成員,僅重寫一個從CWinApp類繼承的函數。初始化實例于應用程序使用初期被請求,就在應用程序開始運轉之后,先于建立窗口。實際上,若不是初始化實例建立一個窗口,應用程序就不會顯示窗口。這也就是為什么再小的MFC應用程序都要從CWinApp類開始,并重寫CWinApp::InitInstance.初始化實例函數CWinApp::InitInstance是一個默認為僅包括一個語句聲明的虛擬函數:returnTRUE;初始化實例的目的是為了提供一個初始化應用程序本身的機會。初始化實例的返回值決定下一步執行什么業務流程。初始化實例返回錯誤信息則關閉應用程序。如果按計劃賦初值,初始化實例應當返回真值以便允許程序運行。初始化實例是最佳的方式來執行賦初值操作,這是因為每次程序啟動都要這樣做。至少,這意味著建立將在屏幕上描繪應用程序的窗口。CMyApp類的初始化實力的實現,例如出現在Hello.cpp中的,通過舉例說明Hello的CMainWindow類建立Hello窗口。這個聲明mpMainWnd=newCMainWindow;建立了一個CMainWindow對象并把它的地址復制到應用程序對象的mpMainWnd數據成員。窗口建好之后,初始化實例顯示——記住,一個窗口最初不是可見的,除非它通過一個WSVISIBLE屬性建立——通過CMainWindow指針調用ShowWindow和UpdateWindow:mpMainWnd->ShowWindow(mnCmdShow);mpMainWnd->UpdateWindow();ShowWindow和UpdateWindow是共享于所有窗口對象的CWnd成員函數,包括擁有派生的CMainWindow的CFrameWnd類的對象。這些函數完全少于同名的API函數封裝器。從一個MFC程序調用一個合格的窗體API函數,一般慣例是用全局作用域解析運算符::作為函數名開端,例如:::UpdateWindow(hwnd);通過這個符號,即便API函數調用擁有同名成員函數的對象,也可以確保無誤。本書其余部分中,窗口API函數將用::字符從MFC成員函數中區分出來.ShowWindow僅接受一個參數:一個整形數據用來指定是否最初窗口最小化、最大化或者既非最小化也非最大化。依照窗口程序設計協議,Hello傳遞存儲了mnCmdShow變量的應用程序對象ShowWindow,它負責把保留thenCmdShow參數傳到WinMain。mnCmdShow的數據通常是SWSHOWNORMAL,表明展示窗口的方式應該聲明為標準的未最大化的和未最小化的。無論如何,取決于用戶啟動應用程序,窗口偶爾就會悄悄地變成例如SWSHOWMAXIMIZED或SWSHOWMINIMIZED。除非有特定條件,否則初始化實例總是傳遞mnCmdShow變量,而不是把SW的值寫入ShowWindow。UpdateWindow完成強制刷新ShowWindow的使命。等它完成,初始化實例返回真值由此來允許應用程序運行。其他的重寫CWinApp類初始化實例僅僅是你可重寫的少數幾個虛擬CWinApp類中的自定義應用程序對象行為的成員函數中的一個。在你的MFC文件材料中查閱CWinApp重寫類,你將發現不少于一打的一串其他例如名為WinHelp和ProcessWndProcException的。這些函數多為很少用來重寫的,但是他們至少是觸手可及的。例如說,當你結束一個應用程序時你可以用ExitInstance來清理數據。你可以用InitInstance來分配內存或者其他資源,ExitInstance最適合釋放那些資源。ExitInstance的默認執行一些瑣碎的日常清理,它需要通過業務框架,如果你重寫了ExitInstance,你無疑要調用基礎類。最后,ExitInstance的返回值是被WinMain送回來的退出代碼。其他值得關注的CWinApp重寫類有OnIdle,Run,和PreTranslateMessage。OnIdle適合除了瑣碎的后臺處理,比如,碎片帳集。由于OnIdle是在應用程序空轉時調用的——就是說,當沒有消息等待處理時——它提供一個極好的低優先級后臺任務執行機制,它不需要大量單獨執行。OnIdle在第十四章最后討論了。你可以重寫Run來自主重定義消息循環。如果你僅想執行一些某些消息發送前的專門的預處理,你可以重寫PreTranslateMessage,并且是你免受寫一個全新的消息循環的麻煩。原文:YourFirstMFCApplicationIt'stimetobuildyourfirstMFCapplication.Andwhatbetterplacetostartthanwithonethatdisplays"Hello,MFC"inawindow?Basedontheclassic"Hello,world"programimmortalizedinBrianKernighanandDennisRitchie'sTheCProgrammingLanguage(1988,Prentice-Hall),thisveryminimalprogram,whichI'llcallHello,demonstratesthefundamentalprinciplesinvolvedinusingMFCtowriteaWindowsapplication.Amongotherthings,you'llgetaclose-uplookatMFC'sCWinAppandCFrameWndclassesandseefirsthandhowclassesarederivedfromthemandpluggedintotheapplication.You'llalsolearnabouttheall-importantCPaintDCclass,whichservesastheconduitthroughwhichtextandgraphicsaredrawninawindowinresponsetoWMPAINTmessages.Finally,you'llbeintroducedtomessagemapping,themechanismMFCusestocorrelatethemessagesyourapplicationreceiveswiththememberfunctionsyouprovidetohandlethosemessages.Figure1-3liststhesourcecodeforHello.Hello.hcontainsthedeclarationsfortwoderivedclasses.Hello.cppcontainstheimplementationsofthoseclasses.AmongC++programmers,it'straditionaltoputclassdefinitionsin.hfilesandsourcecodein.cppfiles.We'llhonorthattraditionhereandthroughouttherestofthisbook.Forlargeapplicationscontainingtensorperhapshundredsofclasses,it'salsobeneficialtoputclassdeclarationsandimplementationsinseparatesourcecodefiles.That'soverkillfortheprogramsinthefirstfewchaptersofthisbook,butlateron,whenwebeginworkingwithdocumentsandviews,we'llgiveeachclassitsown.hand.cppfiles.OntheCDinthebackofthebook,inthefoldernamedChap01,you

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論