版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
快速入門及注意事 第1章ROCKEY4SMART簡(jiǎn)快速入門及注意事 第1章ROCKEY4SMART簡(jiǎn) 關(guān)于ROCKEY4SMART加密 ROCKEY4SMART加密鎖的優(yōu) 軟件保 ROCKEY4SMART加密鎖的基本概 密 硬件 用戶內(nèi)存 模塊 模塊屬性 算法 用戶 種子碼與返回 隨機(jī) 2計(jì)時(shí)和計(jì) ROCKEY4SMART其他功 第3章軟件加密方法舉 一些簡(jiǎn)單的加密技 有迷惑性的代 虛假的檢 驗(yàn)證時(shí)機(jī)的選 使用ROCKEY4SMART進(jìn)行加 遠(yuǎn)程升 第4章ROCKEY4SMART外部API函 函數(shù)原型與定 ROCKEY4SMARTAPI服 RY_OPEN(打開(kāi)鎖 RY_ClOSE(關(guān)閉鎖 1 錯(cuò)誤編 4.3.1錯(cuò)誤編 基本應(yīng)用示 查找加密鎖— 綜合應(yīng)用示 用戶內(nèi)存區(qū)的靈活綜合應(yīng) 種子碼的靈活綜合應(yīng) 模塊字的靈活綜合應(yīng)用 同號(hào)加密鎖不同軟件的應(yīng)用方案 第5章ROCKEY4SMART加密鎖的硬件算 ROCKEY4SMART加密鎖自定義算法介 算法指令格 加密鎖內(nèi)部算法與用戶程序的接 三種算法的區(qū) ROCKEY4SMART加密鎖自定義算法寫 寫入算 算法指令的一些限 ROCKEY4SMART加密鎖自定義算法使用示 算法基本應(yīng)用示 算法1示 算法2示 算法3示 算法綜合應(yīng)用示 綜合示例 綜合示例 綜合示例 綜合示例 2需要注意的問(wèn) 加密方案的應(yīng)用要 在需加密的程序中,盡量使用多次加密調(diào) 在需加密的程序中,盡量動(dòng)態(tài)的使用種子碼等功需要注意的問(wèn) 加密方案的應(yīng)用要 在需加密的程序中,盡量使用多次加密調(diào) 在需加密的程序中,盡量動(dòng)態(tài)的使用種子碼等功 在需加密的程序中,盡量避免使用重復(fù)加密方 在需加密的程序中,對(duì)其中某些字符串和數(shù)據(jù)進(jìn)行加密處 第6章ROCKEY4SMART網(wǎng)絡(luò) NetRockey4Smart簡(jiǎn) 基本概 配置文 記錄文 端口和 網(wǎng)絡(luò)地 搜索方 打開(kāi)方 超時(shí)設(shè) 最大用戶數(shù) 不響應(yīng)時(shí)服務(wù)端的保留時(shí) 0單個(gè)進(jìn)程中打開(kāi)模塊的限 6.1.2配置文 Rockey4Smart網(wǎng)絡(luò)鎖的函 函數(shù)原形與定 函數(shù)原 NetRockey4SmartAPI服 找鎖 查找下一鎖 打開(kāi)鎖 關(guān)閉鎖 讀鎖 寫鎖 隨機(jī)數(shù) 種子碼 寫用戶ID[*] 讀用戶ID 設(shè)置模塊[*] 檢查模塊屬性 寫算法[*] 計(jì)算1 計(jì)算2 計(jì)算3 遞減 Rockey4Smart網(wǎng)絡(luò)鎖的錯(cuò)誤 常規(guī)錯(cuò)誤 速測(cè)Rockey4Smart網(wǎng)絡(luò)鎖的功 3快速入門及ROCKEY4SMART加密鎖出廠設(shè)置為 P1、P2是基本密碼(或一級(jí)密碼),P3、P4是高級(jí)密碼(快速入門及ROCKEY4SMART加密鎖出廠設(shè)置為 P1、P2是基本密碼(或一級(jí)密碼),P3、P4是高級(jí)密碼(或二級(jí)密碼),開(kāi)發(fā)商可以修改。在0ROCKEY4SMART加密鎖是USBHID設(shè)備,支持Win98SE以上的Windows統(tǒng),包括最新的Windows7操作系統(tǒng),不需要安裝額外的驅(qū)動(dòng)程序ROCKEY4SMART64位(8個(gè)字節(jié))ROCKEY4SMART每個(gè)存儲(chǔ)單元的硬件擦寫次數(shù)為10萬(wàn)次,讀沒(méi)有限制。工作溫度:0℃-70℃。),工具能幫您完成諸如加密鎖的初始化、編輯修改等操作,是您使用加密鎖的實(shí)用工具(詳細(xì)光盤的Tools\Envelope目錄下,您能找到ROCKEY4SMART加密鎖標(biāo)準(zhǔn)外殼加密工具 位應(yīng)用程序。不需要寫一行代碼,是最簡(jiǎn)(Envelope.exe),該工具可以方便、快捷的加最快速的加密方案。(詳細(xì)參考《ROCKEY4SMART實(shí)用工具手冊(cè)》)光盤的Tools\RsaTool目錄下,您能找到ROCKEY4SMART加密鎖RSA密鑰產(chǎn)生工具(RsaTool.exe),該工具可以產(chǎn)生RSA運(yùn)算所需的密鑰。(詳細(xì)參考《ROCKEY4SMART實(shí)用工手冊(cè)》)ManagementROCKEY4SMART商生產(chǎn)工具和客戶遠(yuǎn)程升級(jí)工具,這些工具可以方便、快捷的實(shí)現(xiàn)遠(yuǎn)程升級(jí)功能。(詳細(xì) 加密鎖提供外部函數(shù)調(diào)用(API)保護(hù)方法,您可以在自己要保護(hù)的應(yīng)序中連接入RO4MARTARK4MARTAI(ROCKEY4SMART外部API函數(shù)調(diào)用及光盤Samples目錄下的程序示例)如果您需要使用 加密鎖進(jìn)行開(kāi)發(fā)或者測(cè)試請(qǐng)與我公司聯(lián)系。并請(qǐng)關(guān)注我們網(wǎng)站:http://www.FT(中文http://www.Fsafe.co(英文http://ww.Fsaf.co.jp(日文4(34第1章ROCKEY4SMART1.1關(guān)于ROCKEY4SMART加密R4MARTD區(qū)以及計(jì)時(shí)計(jì)次模塊。開(kāi)發(fā)者則可以將軟件的一些重要信息(如序列號(hào)等)保存在加密鎖中,需要注意的是,每個(gè)存儲(chǔ)單元可寫第1章ROCKEY4SMART1.1關(guān)于ROCKEY4SMART加密R4MARTD區(qū)以及計(jì)時(shí)計(jì)次模塊。開(kāi)發(fā)者則可以將軟件的一些重要信息(如序列號(hào)等)保存在加密鎖中,需要注意的是,每個(gè)存儲(chǔ)單元可寫10萬(wàn)次,讀的次數(shù)不受限制。10碼生成器、用戶自定義算法的解釋器1.2ROCKEY4SMART加密鎖的小巧美ROCKEY4SMART加密鎖美觀、時(shí)尚、精巧,便于攜帶速度對(duì)于已使ROCKEY4 加密鎖加密后的軟件,其運(yùn)行速度同加密前區(qū)別不大,即使用簡(jiǎn)ROCKEY4SMART 限度地簡(jiǎn)化APIROCKEY4SMART加密強(qiáng)度高到一個(gè)新的高度ROCKEY4 加密鎖采用了種子的方式產(chǎn)生密碼,種子長(zhǎng)度最大8字節(jié),大大增加了安全性ROCKEY4SMART加密鎖采用智能卡芯片,內(nèi)部結(jié)構(gòu)設(shè)計(jì)合理,ROCKEY4SMART加密鎖成為一個(gè)算法復(fù)雜度的前提下,程序被破解的可能性等5系統(tǒng)支持全ROCKEY4SMART加密鎖支持的平臺(tái):Windows98SE、WindowsMe、Windows2000、WindowsXPWindowsServer2003、Windows2008、WindowsVista、Windows7軟件接口系統(tǒng)支持全ROCKEY4SMART加密鎖支持的平臺(tái):Windows98SE、WindowsMe、Windows2000、WindowsXPWindowsServer2003、Windows2008、WindowsVista、Windows7軟件接口豐對(duì)于大多數(shù)開(kāi)發(fā)工具都有相應(yīng)的軟件接口,VB、VC、BUILDER、PB、DELPHI、VS.NET、JAVA1.3軟件保在軟件加密方面 采用了多種先進(jìn)的關(guān)鍵加密技術(shù),是目前軟件保護(hù)領(lǐng)域中非常安的保護(hù)產(chǎn)品硬件上的安固的硬件基礎(chǔ)。RO4MART采用了安全強(qiáng)度最高的智能卡芯片,硬件不能被復(fù)制,多重安全級(jí)16位U,2k646464ROE4MART根本上提高了軟件的加密強(qiáng)度硬件上的兼ROCKEY4SMARTHIDWIN98裝驅(qū)動(dòng)程序,徹底解決了由于驅(qū)動(dòng)安裝而給軟件開(kāi)發(fā)商帶來(lái)的各種各樣的問(wèn)題。無(wú)驅(qū)的同時(shí)SMART使用高速協(xié)議,對(duì)應(yīng)用軟件沒(méi)有任何速度上的影響。正因?yàn)榧嫒菪?,使?SMART幾乎不需要任何維護(hù),大大節(jié)省了維護(hù)成本SMART在硬件上卓越先進(jìn)的軟件ROCKEY4SMART就像一個(gè)小型計(jì)算機(jī),128條指令的算法,這些算法在ROCKEY4SMART中運(yùn)行,計(jì)算機(jī)中沒(méi)有任何程序的痕跡,同時(shí)ROCKEY4SMART的算法區(qū)域任何人也獲取不到。軟件開(kāi)發(fā)商發(fā)行的是一個(gè)不完整的軟件,只有與ROCKEY4SMART結(jié)合,軟件才能夠正確執(zhí)行。由于硬件上的安全性,可以認(rèn)為ROCKEY4SMART是不可破解的6第2章ROCKEY4SMART2.1密每個(gè)ROCKEY4SMART加密鎖出廠時(shí)都會(huì)設(shè)416位長(zhǎng)的密碼第2章ROCKEY4SMART2.1密每個(gè)ROCKEY4SMART加密鎖出廠時(shí)都會(huì)設(shè)416位長(zhǎng)的密碼。其中頭兩個(gè)是基本密碼(或一級(jí)密碼后兩個(gè)是高級(jí)密碼(或二級(jí)密碼。出廠密碼的默認(rèn)值是,一級(jí)密碼(P1:C44C,P2:C8F8級(jí)密碼(P30799P4C43B,開(kāi)發(fā)商可以通過(guò)我們提供的實(shí)用工具來(lái)修改密碼(詳見(jiàn)《ROCKEY4鎖的所有權(quán)限,而在開(kāi)發(fā)者提交給最終用戶的軟件中,不應(yīng)該包括高級(jí)密碼(或二級(jí)密碼),因?yàn)榛敬a已經(jīng)具備了保護(hù)軟件所需要訪問(wèn)加密鎖所有功能的權(quán)限,在程序中,需要引入密碼的地方,應(yīng)該把個(gè)高級(jí)密碼都設(shè)0。下面的內(nèi)容會(huì)更進(jìn)一步指出在什么情況下需要什么樣R4MART8R4MART會(huì)加了安全性2.2硬件ROCKEY4SMARTIDIDIDIDROCKEY4SMART有效性ID開(kāi)發(fā)商調(diào)用RY_FIND接口成功后,硬件序列號(hào)會(huì)返回在參數(shù)lp1中,詳見(jiàn)第4.2.1章節(jié)2.3用戶內(nèi)存這個(gè)區(qū)域是一個(gè)存儲(chǔ)區(qū),開(kāi)發(fā)者可以讀/寫這一區(qū)例如在此區(qū)域?qū)懭胍恍┸浖\(yùn)行所需的或相關(guān)的內(nèi)容來(lái)檢驗(yàn)軟件的合法性,促使軟件在只有加密鎖的情況下才能正常工用戶內(nèi)存區(qū)分兩個(gè)部分:低地址區(qū)(0—499)和高地址區(qū)(500--軟件開(kāi)發(fā)商在調(diào)用API函數(shù)對(duì)用戶內(nèi)存區(qū)進(jìn)行讀、寫操作時(shí),請(qǐng)調(diào)用RY_READ_EXRY_WRITE_EX口(詳見(jiàn)4.2.57操作屬性:低地址區(qū),一、二級(jí)密碼均可讀寫 高地址區(qū),一級(jí)密碼可讀,二級(jí)密碼可讀寫2.4模塊這是為實(shí)現(xiàn)多模塊加密而設(shè)立的特殊加密鎖內(nèi)部單元,它也可用于軟件加密的特定數(shù)據(jù)保存2.4模塊這是為實(shí)現(xiàn)多模塊加密而設(shè)立的特殊加密鎖內(nèi)部單元,它也可用于軟件加密的特定數(shù)據(jù)保存殼加密和 方式調(diào)用時(shí)有不同的功用ROCKEY4SMART6416時(shí)啟 個(gè)模塊來(lái)做加密處理。開(kāi)發(fā)者可以向這個(gè)區(qū)域?qū)懭肽K字,只要這個(gè)模塊字內(nèi)容不0,就示這個(gè)模塊可以使用,如 就表示這個(gè)模塊不可使用,最終用戶可以通過(guò)檢查模塊屬性字來(lái)識(shí)個(gè)模塊是否可用,如果希望確切檢查這個(gè)模塊字的內(nèi)容是什么,用戶必須通過(guò)自定義算法功能來(lái)讀取,這便大大提高了安全性2.5模塊屬性81644模塊可用屬性字每一位代表一個(gè)模塊字是否可用。1表示對(duì)應(yīng)的模塊可用(即模塊字內(nèi)容非0 示對(duì)應(yīng)的模塊不可用(即模塊字內(nèi)容為0模塊遞減屬性字每一位代表一個(gè)模塊字是否可以遞減。塊不可以遞表示對(duì)應(yīng)的模塊可以遞減表示對(duì)應(yīng)的2.6算法1281616位單元,128條指令。ROCKEY4SMART3ID(5ROCKEY4SMART加密鎖的硬件算法該區(qū)域是不可讀的,充分提高了安全性2.7用戶這是為開(kāi)發(fā)商管理自己發(fā)布的軟件而設(shè)立的序列號(hào)單元,它是一 位長(zhǎng)的數(shù)字,被保存在加密8操作屬性:一、二級(jí)密碼下均不可讀;二級(jí)密碼下可操作屬性操作屬性:一、二級(jí)密碼下均不可讀;二級(jí)密碼下可內(nèi)部的特定位置。開(kāi)發(fā)商當(dāng)然也可以根據(jù)實(shí)際情況用作其他的一些用途,例如寫入一個(gè)時(shí)間內(nèi)部的特定位置。開(kāi)發(fā)商當(dāng)然也可以根據(jù)實(shí)際情況用作其他的一些用途,例如寫入一個(gè)時(shí)間或與其產(chǎn)理相關(guān)的信息等2.8種子碼與返回向 加密鎖輸入一個(gè)種子碼,通過(guò)內(nèi)部算法可以計(jì)算這個(gè)種子碼的四個(gè)返回碼。種子碼算法是不公開(kāi)密碼相同的加密鎖在輸入相同的種子碼的時(shí)候會(huì)返回四個(gè)相同的返回碼,密碼不同的加密鎖即相同的種子碼,返回碼也不同,所以可以通過(guò)檢查這種依賴關(guān)系來(lái)判別是否是所期望的加密2.9隨機(jī)通 加密鎖可得到一隨機(jī)數(shù),借此可以進(jìn)行一些抗跟蹤操作,或使其在硬件算參與運(yùn)算,或進(jìn)行其他功用等2.10計(jì)時(shí)和ROCKEY4SMART6464期,軟件通過(guò)設(shè)置和訪問(wèn)64個(gè)的計(jì)時(shí)單元中任何一個(gè),控制對(duì)用戶的時(shí)間授權(quán)。還可以通過(guò)Rockey4Smart加密鎖的計(jì)次單元來(lái)控制軟件的使用次 加密鎖還有一個(gè)特征是,如果向計(jì)時(shí)單元寫入了小時(shí)數(shù),在加密鎖連接到電腦上自動(dòng)遞減時(shí)間,不用程序特意去控制,這樣就方便了編程人員的使2.11ROCKEY4SMART其他功ROCKEY4SMART為硬件級(jí)通訊加密,在USB接口上傳輸?shù)臄?shù)據(jù)都是密文。即軟件中的數(shù)據(jù),經(jīng)過(guò)傳送ROCKEY4SMART再在硬件內(nèi)部進(jìn)行解密,然后進(jìn)行操作,反之ROCKEY4SMART硬件實(shí)現(xiàn)1024位的RSA非對(duì)稱算法和DES\3DES對(duì)稱算法,開(kāi)發(fā)商可以用這些算法數(shù)據(jù)進(jìn)行加解密開(kāi)發(fā)商可以將應(yīng)用軟件中的公式放入到 加密鎖的算法區(qū)中來(lái)完成級(jí)程序,就可以將鎖內(nèi)的數(shù)據(jù)進(jìn)行升級(jí)(詳見(jiàn)《ROCKEY4SMART實(shí)用工具手冊(cè)》。升級(jí)數(shù)據(jù)包可以使用ROCKEY4SMART加密鎖授權(quán)管理工具產(chǎn)生(詳見(jiàn)《ROCKEY4SMART實(shí)用工具手冊(cè)》可以調(diào)API接口產(chǎn)生(詳見(jiàn)4.2.31—4.2.359操作屬性:一、二級(jí)密碼下均可讀;二級(jí)密碼下可第3章軟件加密方法舉例上一章介紹了RO4MART加密鎖的特點(diǎn),那么怎樣才能將RK4第3章軟件加密方法舉例上一章介紹了RO4MART加密鎖的特點(diǎn),那么怎樣才能將RK4MARTRCY4MART軟件。這些方法都是您在軟件保護(hù)的書籍中或者相關(guān)的網(wǎng)站上可以找到的,在這里只是給大家做用ROCKEY4SMART設(shè)計(jì)出自己獨(dú)特的加密方案,真正達(dá)到您的軟件不可破3.1一些簡(jiǎn)單的加密對(duì)于軟件保護(hù)來(lái)說(shuō),有些技巧并不需要你掌握很多匯編或系統(tǒng)低層的知識(shí)也能夠做到。我們都知道,不論您的軟件采用何種方式來(lái)加密,很多情況下總是會(huì)歸結(jié)為某些條件的判定,如果滿足了這些條件,程序就會(huì)認(rèn)為軟件是允許執(zhí)行下去的,否則就會(huì)報(bào)告一些錯(cuò)誤并退出執(zhí)行。不論這些代碼必然以這樣或那樣的形式存在,我們考慮的重點(diǎn)是如何有效的隱藏和保護(hù)這些代碼是這么理解開(kāi)發(fā)人員的,他通過(guò)分析程序中保護(hù)代碼的每一段指令來(lái)追索編程人員的保護(hù)思路。如果反其道而行之,故意添加大量的無(wú)用的代碼,把程序復(fù)雜化,畢竟開(kāi)發(fā)者是在拿高級(jí)語(yǔ)言編并不是一件簡(jiǎn)單的事故意去把返回結(jié)果和一些錯(cuò)誤的答案進(jìn)行比較,比較結(jié)果一定應(yīng)該是錯(cuò)誤的,如果比較發(fā)現(xiàn)是正確的,說(shuō)明有人正在試圖破解您的軟件。反擊的手段可以有多種選3.1.3-1驗(yàn)證時(shí)機(jī)的選軟件在運(yùn)行時(shí),驗(yàn)證時(shí)機(jī)可以是沒(méi)有規(guī)律3.1.3-1驗(yàn)證時(shí)機(jī)的選軟件在運(yùn)行時(shí),驗(yàn)證時(shí)機(jī)可以是沒(méi)有規(guī)律的,是散亂的,那么要查找到所有的加密點(diǎn)則一件容易的事情3.2使用ROCKEY4SMART進(jìn)行加軟件加密方法是每個(gè)軟件開(kāi)發(fā)商結(jié)合自己軟件特點(diǎn)所設(shè)計(jì)出來(lái)的具有獨(dú)特性的方案,每個(gè)開(kāi)發(fā)商應(yīng)該有自己特別的方案,不要雷同,更要做好保密工作,防止破解者根據(jù)經(jīng)驗(yàn)進(jìn)行破解。下RE4MART的復(fù)雜運(yùn)算能力和密鑰保密性等特3.2.1ROCKEY4SMART傳統(tǒng)的軟件加密方法很多只是把加密鎖當(dāng)作存儲(chǔ)設(shè)備,將簡(jiǎn)單的信息存儲(chǔ)在里面,然后在軟件運(yùn)行時(shí)進(jìn)行判斷,也有許多開(kāi)發(fā)商只是檢測(cè)硬件是否存在,這些加密手段在現(xiàn)在的破解中十分以前只有在PC中才可以實(shí)現(xiàn)的功能,軟件開(kāi)發(fā)商可以通過(guò)這樣的步驟來(lái)實(shí)現(xiàn)軟件(1)使用高級(jí)語(yǔ)言開(kāi)發(fā)(2)將核心算法公式ROCKEY4SMART加密鎖的算法區(qū),在鎖內(nèi)計(jì)算,ROCKEY4采用的是16位的智能卡芯片,運(yùn)算能力非??欤?)加密鎖內(nèi)的公式不能是已經(jīng)公開(kāi)的或者是泄漏的公式,這些不安全的公式可以被破軟件模擬的(5)利用 SMART加密鎖提供的三種算法,將硬件ID、種子碼、模塊字等功能結(jié)到算法中,使軟件得到最大限度的保(6)使用 加密鎖的計(jì)時(shí)計(jì)次模塊,開(kāi)發(fā)商可以輕松的實(shí)現(xiàn)各種銷售模式(7)ROCKEY4SMART163DESRSA運(yùn)算能力。3DES,RSA這些對(duì)稱和非對(duì)稱的加解密算法可以使用在單機(jī)版軟件,C/S結(jié)構(gòu)和B/S上述的方法是軟件保護(hù)中最有效的 就是一個(gè)黑盒子,那么只要注意上面四點(diǎn)說(shuō)明,使用這樣的方法進(jìn)行保護(hù)的軟件是不可能被破解的軟件開(kāi)發(fā)商將加密后的軟件賣給最終用戶后,在軟件進(jìn)行升級(jí)時(shí)可以利用遠(yuǎn)程升級(jí)功能而不必回收加密鎖。遠(yuǎn)程升級(jí)時(shí),開(kāi)發(fā)商用自己手中的母鎖,產(chǎn)生升級(jí)包,發(fā)給最終用戶,最終用戶手中的子鎖在驗(yàn)證基本密碼(或一級(jí)密碼狀態(tài)下就可以升級(jí)加密鎖中的所有信息:用戶ID遠(yuǎn)程升級(jí)可以通過(guò)調(diào)用AI接口實(shí)現(xiàn),也可以使用R4MART的授權(quán)管理平臺(tái)工具、開(kāi)發(fā)商生產(chǎn)工具和客戶升級(jí)工具來(lái)實(shí)現(xiàn)詳見(jiàn)《R4SMART產(chǎn)生升級(jí)包時(shí)可以指定允許被升級(jí)的硬 ID、UID、模塊字等,這樣就能對(duì)指定的SMART進(jìn)行升級(jí)第4章ROCKEY4SMART外部APIROCKEY4SMART(API)ROCKEY4SMART活的加密方式。使用我們提供的API果的好壞取決于您如何使用它API第4章ROCKEY4SMART外部APIROCKEY4SMART(API)ROCKEY4SMART活的加密方式。使用我們提供的API果的好壞取決于您如何使用它API調(diào)用越復(fù)雜,軟件保護(hù)越好。我們最大限度地簡(jiǎn)化接口 應(yīng)用程序通過(guò)使用API與ROCKEY4SMART聯(lián)系來(lái)提高安全性。您可以在應(yīng)用程序的任何地方來(lái)檢測(cè)ROCKEY4SMART加密鎖的存在,并決定如何響應(yīng)檢測(cè)結(jié)果。您也可以檢測(cè)您存儲(chǔ)在ROCKEY4SMART加密鎖用戶內(nèi)存區(qū)中的數(shù)據(jù)當(dāng)您使API來(lái)做加密處理時(shí),你可以預(yù)先使用ROCKEY4SMART加密鎖編輯器來(lái)完成一要的操作,比如模塊的設(shè)置、用戶內(nèi)存數(shù)據(jù)的寫入、算法及用戶ID的寫入等,當(dāng)然這一切操作也都可以使用API來(lái)完成。4.1函數(shù)原型與定 WORD*DWORD*DWORD* 加密鎖的函數(shù)只有一個(gè),開(kāi)發(fā)者只需要通過(guò)這個(gè)函數(shù)的調(diào)用就可以使用鎖的全部功能,這個(gè)函數(shù)本身就是一個(gè)多功能的函 語(yǔ)言調(diào)用樣例,下面的說(shuō)明都會(huì)依照這個(gè)樣例來(lái)retcode=函數(shù)的參數(shù)定義如下4-1函數(shù)參數(shù)定Function161234789寫用戶讀用戶計(jì)算計(jì)算計(jì)算設(shè)置RSA私鑰N,公<注意 所有的接口參數(shù)函數(shù)的參數(shù)定義如下4-1函數(shù)參數(shù)定Function161234789寫用戶讀用戶計(jì)算計(jì)算計(jì)算設(shè)置RSA私鑰N,公<注意 所有的接口參數(shù)必須在程序中定義,不能傳遞一個(gè)NULL類型的空指針過(guò)去API參數(shù)參數(shù)參數(shù)參數(shù)4-2Function功能定handlelp1,lp2p1,p2,p3,p4是短整形參數(shù)指針,具體內(nèi)容根據(jù)功能的不同而不同buffer是字符緩沖區(qū)指針,具體內(nèi)容根據(jù)功能的不同而不同4.2ROCKEY4SMARTAPI服4.2.1RY_FIND說(shuō)明查找計(jì)算機(jī)上連接的ROCKEY4SMART加密鎖設(shè)備<注意>:OCEY4MRT4-2Function功能定handlelp1,lp2p1,p2,p3,p4是短整形參數(shù)指針,具體內(nèi)容根據(jù)功能的不同而不同buffer是字符緩沖區(qū)指針,具體內(nèi)容根據(jù)功能的不同而不同4.2ROCKEY4SMARTAPI服4.2.1RY_FIND說(shuō)明查找計(jì)算機(jī)上連接的ROCKEY4SMART加密鎖設(shè)備<注意>:OCEY4MRT的高級(jí)密碼(或二級(jí)密碼),是為開(kāi)發(fā)者操作加密鎖使用的,在最終用戶軟件中,不需要也不應(yīng)該出現(xiàn),我們要求開(kāi)發(fā)者在最終用戶軟件中,在查找加密鎖的P3、P4設(shè)置0設(shè)置RSA私鑰D,公設(shè)置DES密RY_DES3DES加RY_DES3DES解RY_RSA加RY_RSA解轉(zhuǎn)換時(shí)間(DWORD類型輸入?yún)?shù)function=*p1=*p2=*p3=3(可選*p4=4(可選返回0表示成功,其它為錯(cuò)誤碼。當(dāng)成功時(shí),*lp1ID注意輸入?yún)?shù)function=*p1=*p2=*p3=3(可選*p4=4(可選返回0表示成功,其它為錯(cuò)誤碼。當(dāng)成功時(shí),*lp1ID注意事項(xiàng)一臺(tái)計(jì)算機(jī)上允許最多同時(shí)插入32把ROCKEY4SMART通常情況下,這個(gè)函數(shù)只需要在程序一開(kāi)始時(shí)調(diào)用 次,這個(gè)函數(shù)會(huì)進(jìn)行一些初化工作,并建立內(nèi)部的設(shè)備列表,所以至少要調(diào)用1如果是多線程程序,最好在主線程開(kāi)始的時(shí)候調(diào)用1當(dāng)用戶有插/拔動(dòng)作時(shí),不會(huì)導(dǎo)致設(shè)備個(gè)數(shù)的變4.2.2RY_FIND_NEXT說(shuō)明查找是否還有指定密碼的輸入?yún)?shù)function=*p1=*p2=*p3=3可選*p4=4可選*lp1=RY_FIND或RY_FIND_NEXT所找到的上一把加返回值0*lp1ID4.2.3RY_OPEN打開(kāi)說(shuō)明ID輸入?yún)?shù)function=*p1=*p2=*p3=3可選*p4=4可選*lp14.2.3RY_OPEN打開(kāi)說(shuō)明ID輸入?yún)?shù)function=*p1=*p2=*p3=3可選*p4=4可選*lp1=返回值返回 表示成功,其它為錯(cuò)誤碼。當(dāng)成功時(shí)為加密鎖的句柄注意事項(xiàng)打開(kāi)成功,*handle指向被打開(kāi)的ROCKEY4SMART加密鎖的設(shè)備句柄該函數(shù)打開(kāi)時(shí)是共享模式,即允許其他進(jìn)程也可以打開(kāi)SMART。在這種式下是支持多進(jìn)程的。因此,只在程序開(kāi)始和退出時(shí)打開(kāi)和關(guān)閉一次就可以,頻開(kāi)和關(guān)閉動(dòng)作會(huì)降低程序ROCKEY4SMARThandle保存打開(kāi)過(guò)的加密鎖的句柄,為下一步具體操作加密鎖做好準(zhǔn)備。也可以循環(huán)操個(gè)加密鎖用戶完成自己的操作后,應(yīng)該調(diào)用動(dòng)作,釋放設(shè)備句4.2.4RY_ClOSE關(guān)閉鎖說(shuō)明關(guān)閉ROCKEY4SMART設(shè)備。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=*handle=要關(guān)閉的ROCKEY4SMART設(shè)備的句柄,與RY_OPEN返回值0說(shuō)明讀出加密鎖用戶內(nèi)存區(qū)的內(nèi)容。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備返回值0說(shuō)明讀出加密鎖用戶內(nèi)存區(qū)的內(nèi)容。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備輸入?yún)?shù)function=*handle=*p1=*p2=buffer=返回值0buffer注意事項(xiàng)20000-499字節(jié)為低地址區(qū),500-1999調(diào)用此函數(shù)可以在驗(yàn)證低級(jí)密碼(或一級(jí)密碼)的狀態(tài)下讀取所有用戶內(nèi)存區(qū)的內(nèi)容說(shuō)明向用戶內(nèi)存區(qū)寫入內(nèi)容。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備輸入?yún)?shù)function=*handle=*p1=*p2=buffer=返回值0注意事項(xiàng)20000-499字節(jié)為低地址區(qū),500-1999字節(jié)為高地址區(qū),返回值0注意事項(xiàng)20000-499字節(jié)為低地址區(qū),500-1999字節(jié)為高地址區(qū),碼(或二級(jí)密碼)的狀態(tài)下可以寫所有的區(qū)域4.2.7RY_RANDOM說(shuō)明獲取一個(gè)隨機(jī)數(shù)。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=*handle=返回值中為加密鎖返回的隨0數(shù)4.2.8RY_SEED說(shuō)明得到種子碼的返回碼。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=*handle=*lp2=返回值0當(dāng)成功時(shí)*p1=*p2=*p3=*p4=注意事項(xiàng)種子碼的算法在加密鎖的內(nèi)部完成,并且不對(duì)任何人*p2=*p3=*p4=注意事項(xiàng)種子碼的算法在加密鎖的內(nèi)部完成,并且不對(duì)任何人 RY_WRITE_USERID(寫用戶說(shuō)明寫入用 ID,調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)(RY_OPEN輸入?yún)?shù)function=*handle=*lp1=返回值0注意事項(xiàng)ID32調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)4.2.10RY_READ_USERID(讀用戶說(shuō)明讀出用戶ID。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=*handle=返回值0表示成功,其它為錯(cuò)誤碼。當(dāng)成功時(shí),*lp1ID注意事項(xiàng)ID324.2.11RY_SET_MODULE說(shuō)明設(shè)置模塊字及其遞減屬性,調(diào)用0表示成功,其它為錯(cuò)誤碼。當(dāng)成功時(shí),*lp1ID注意事項(xiàng)ID324.2.11RY_SET_MODULE說(shuō)明設(shè)置模塊字及其遞減屬性,調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)。調(diào)用該函數(shù)前要先打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=*handle=*p1=*p2=*p3=(1=允許,0=不允許返回值0注意事項(xiàng)調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)模塊遞減屬性設(shè)置為1允許遞減時(shí),才能對(duì)模塊進(jìn)行遞減操說(shuō)明檢查模塊屬性字,確定模塊是否可用,是否可以遞減。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備OPEN輸入?yún)?shù)function=*handle=*p1=返回值0當(dāng)成功時(shí)*p21*p31注意事項(xiàng)81644屬性字通返回值0當(dāng)成功時(shí)*p21*p31注意事項(xiàng)81644屬性字通過(guò)檢查模塊可用屬性字來(lái)識(shí)別這個(gè)模塊是否可用,如果希望確切檢查這個(gè)模的內(nèi)容是什么,必須通過(guò)自定義算法功能來(lái)讀取開(kāi)發(fā)商可以通過(guò)模塊遞減屬性和檢查模塊是否可用,來(lái)控制軟件的使用次數(shù)4.2.13RY_DECREASE說(shuō)明對(duì)指定模塊字進(jìn)行遞減操作。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備OPEN輸入?yún)?shù)function=*handle=*p1=返回值0注意事項(xiàng)模塊遞減屬性為1允許遞減時(shí),才能對(duì)模塊進(jìn)行遞4.2.14RY_WRITE_ARITHMETIC(寫算說(shuō)明向加密鎖中寫入自定義算法。調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)。調(diào)用該函數(shù)需要先打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=*handle=*p1=buffer=返回值0注意事項(xiàng)調(diào)用該函數(shù)需要驗(yàn)證輸入?yún)?shù)function=*handle=*p1=buffer=返回值0注意事項(xiàng)調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)該區(qū)域在任何狀態(tài)下都是不可讀的1281616條指令的算4.2.15RY_CALCULATE1(計(jì)算說(shuō)明讓加密鎖進(jìn)行指定方式的算結(jié)果由用戶算法用該函數(shù)前需要先打開(kāi)設(shè)OPEN輸入?yún)?shù)function=*handle=*lp1=*lp2=*p1=*p2=*p3=*p4=返回值0當(dāng)成功時(shí)*p1=*p2=*p3=*p4=4.2.16RY_CALCULATE2(計(jì)算說(shuō)明讓加密鎖進(jìn)行指定方0當(dāng)成功時(shí)*p1=*p2=*p3=*p4=4.2.16RY_CALCULATE2(計(jì)算說(shuō)明讓加密鎖進(jìn)行指定方式的算結(jié)果由用戶算法用該函數(shù)前需要先打開(kāi)設(shè)OPEN輸入?yún)?shù)function=*handle=*lp1=*lp2=*p1=*p2=*p3=*p4=返回值0當(dāng)成功時(shí)*p1=*p2=*p3=*p4=4.2.17RY_CALCULATE3(計(jì)算說(shuō)明讓加密鎖進(jìn)行指定方式的算結(jié)果由用戶算法用該函數(shù)前需要先打*p4=4.2.17RY_CALCULATE3(計(jì)算說(shuō)明讓加密鎖進(jìn)行指定方式的算結(jié)果由用戶算法用該函數(shù)前需要先打開(kāi)設(shè)OPEN輸入?yún)?shù)function=*handle=*lp1=*lp2=模塊字起始地*p1=*p2=*p3=*p4=返回值0當(dāng)成功時(shí)*p1=*p2=*p3=*p4=4.2.18RY_SET_DES_KEY(設(shè)置DES3DES密鑰說(shuō)明設(shè)置DES或3DES密鑰。調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)。調(diào)用該函數(shù)前先打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=*handle=*p1DES算法選擇0—1—Buffer=816返回值0注意事項(xiàng)調(diào)用輸入?yún)?shù)function=*handle=*p1DES算法選擇0—1—Buffer=816返回值0注意事項(xiàng)調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)DES或3DES密鑰寫入鎖內(nèi)在任何狀態(tài)下都不能讀出,保證了密鑰的安全4.2.19RY_DES_ENC(DES或3DES說(shuō)明執(zhí)行DES3DES加密運(yùn)算。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=RY_*handle=*p1DES算法選擇0—1—*p2=要加密的數(shù)據(jù)長(zhǎng)度,必須8的倍Buffer=要加密的數(shù)據(jù),每次最大長(zhǎng)度不超過(guò)1024返回值0注意事項(xiàng)加密的數(shù)據(jù)長(zhǎng)度必須是 的整數(shù)倍。解密后的數(shù)據(jù)可以按照設(shè)定的補(bǔ)齊原則來(lái)得原文。這里的解密為ECB模式。如要完成CBC模式或者其他模式,請(qǐng)?jiān)诖嘶A(chǔ)上自理4.2.20RY_DES_DEC(DES或3DES說(shuō)明執(zhí)行DES3DES加密運(yùn)算。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)4.2.20RY_DES_DEC(DES或3DES說(shuō)明執(zhí)行DES3DES加密運(yùn)算。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=RY_*handle=*p1DES算法選擇0—1—*p2=要解密的數(shù)據(jù)長(zhǎng)度,必須8的倍Buffer=解密數(shù)據(jù),每次最大長(zhǎng)度不超過(guò)1024返回值0注意事項(xiàng)加密的數(shù)據(jù)長(zhǎng)度必須是 的整數(shù)倍。解密后的數(shù)據(jù)可以按照設(shè)定的補(bǔ)齊原則來(lái)得原文。這里的解密為ECB模式。如要完成CBC模式或者其他模式,請(qǐng)?jiān)诖嘶A(chǔ)上自理 RY_SET_RSAKEY_N(設(shè)置RSA私鑰說(shuō)明設(shè)置RSA私鑰N,公鑰為65537。調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)。調(diào)用該前需要先打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=*handle=BufferRSA密鑰N(0-返回值0注意事項(xiàng)Rockey4Smart1024位的RSA調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼) RY_SET_RSAKEY_D(設(shè)置RSA私鑰說(shuō)明設(shè)置RSARockey4Smart1024位的RSA調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼) RY_SET_RSAKEY_D(設(shè)置RSA私鑰說(shuō)明設(shè)置RSA私鑰D,公鑰為65537。調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)。調(diào)用該前需要先打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=*handle=BufferRSA密鑰D(0-返回值0注意事項(xiàng)Rockey4Smart1024位的RSA調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)4.2.23RY_RSA_ENC(RSA加密說(shuō)明RSA加密。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=*handle=*p10=1*p2=要加密數(shù)據(jù)的長(zhǎng)*p3=填充方式0—Rockey1—用戶自我填Buffer=輸入數(shù)據(jù)當(dāng)p3=0(Rockey方式填充)時(shí),每次輸入的加密數(shù)據(jù)不能超120字節(jié);當(dāng)輸入據(jù)長(zhǎng)度為120字節(jié)時(shí),最后一個(gè)字節(jié)必須為0x00當(dāng)p3=1(用戶自我填充)時(shí),每次輸入的加密數(shù)據(jù)據(jù)長(zhǎng)度為120字節(jié)時(shí),最后一個(gè)字節(jié)必須為0x00當(dāng)p3=1(用戶自我填充)時(shí),每次輸入的加密數(shù)據(jù)不能超長(zhǎng)度128字節(jié)時(shí),最后一個(gè)字節(jié)必須為0x00128字節(jié);當(dāng)輸入數(shù)返回值0當(dāng)成功時(shí)Buffer=128字節(jié)的密文注意事項(xiàng)Rockey4Smart1024位的RSA函數(shù)調(diào)用成功后,Buffer中返回密文4.2.24RY_RSA_DEC(RSA解密說(shuō)明RSA解密。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備(RY_OPEN參數(shù)function=*handle=*p10私鑰解密=1*p2=要解密的數(shù)據(jù)長(zhǎng)*p3=填充方式0—Rockey1—用戶自我填Buffer=輸入密文,數(shù)據(jù)固定為128字節(jié),返回解密返回值0注意事項(xiàng)Rockey4Smart1024位的RSA運(yùn)算。每次解密數(shù)據(jù)為128字節(jié)。函數(shù)調(diào)用成功后,Buffer中返回明文4.2.25RY_SET_COUNTER_EX說(shuō)明設(shè)置某計(jì)次單元的值。調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)。調(diào)用該函數(shù)前4.2.25RY_SET_COUNTER_EX說(shuō)明設(shè)置某計(jì)次單元的值。調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)。調(diào)用該函數(shù)前需要打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=*handle=*p1=0*P31可遞減,0返回值0注意事調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)4.2.26RY_GET_COUNTER_EX說(shuō)明讀取某計(jì)次單元的值。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備OPEN輸入?yún)?shù)*handle=返回值0當(dāng)成功時(shí)*P31可遞減,0注意事調(diào)用該函數(shù)首先會(huì)獲取該計(jì)次單元當(dāng)前的數(shù)值,如果該計(jì)次單元為可遞減屬性該計(jì)次單元注意事調(diào)用該函數(shù)首先會(huì)獲取該計(jì)次單元當(dāng)前的數(shù)值,如果該計(jì)次單元為可遞減屬性該計(jì)次單元數(shù)值自動(dòng) 1,如果該計(jì)次單元為不可遞減屬性,則計(jì)次數(shù)值沒(méi)有改變4.2.27RY_SET_TIMER_EX說(shuō)明設(shè)置某計(jì)時(shí)單元的值。調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)。調(diào)用該函數(shù)前需要打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=*handle=*p1=0為基礎(chǔ)的計(jì)時(shí)單元號(hào),64個(gè)計(jì)時(shí)單元0- 1日期,2小時(shí),=3bufferSYSTEMTIME類型的日期時(shí)間值(截止日期),或者DWORD類型的天注意事項(xiàng)調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二級(jí)密碼)返回值返回04.2.28RY_GET_TIMER_EX說(shuō)明讀取某時(shí)鐘單元的值。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備OPEN輸入?yún)?shù)function=*handle=*p1=0為基礎(chǔ)的計(jì)時(shí)單元號(hào),64個(gè)計(jì)時(shí)單元0-返回值0當(dāng)成功時(shí) 1日期,2bufferSYSTEMTIME類型的日期時(shí)間值(截止日期),或者DWORD RY_ADJUST_TIMER_EX說(shuō)明同步加密0當(dāng)成功時(shí) 1日期,2bufferSYSTEMTIME類型的日期時(shí)間值(截止日期),或者DWORD RY_ADJUST_TIMER_EX說(shuō)明同步加密鎖內(nèi)時(shí)鐘和計(jì)算機(jī)時(shí)鐘。在加密鎖內(nèi)時(shí)鐘早于計(jì)算機(jī)時(shí)間的情況下,設(shè)置加密(R_N輸入?yún)?shù)function=bufferSYSTEMTIME返回值0注意事項(xiàng)在加密鎖內(nèi)時(shí)鐘早于計(jì)算機(jī)時(shí)間的情況下,設(shè)置加密鎖內(nèi)時(shí)鐘和計(jì)算機(jī)時(shí)鐘一如果鎖內(nèi)時(shí)鐘晚于計(jì)算機(jī)時(shí)間,則不會(huì)設(shè)置成功 RY_GET_TIME_DWORD說(shuō)明需要先打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=*handle=*lp2=*p1=*p2=*p3=*p4=返回值0當(dāng)成功時(shí)*lp1=2006-1-10:0 RY_SET_UPDATE_KEY(設(shè)置升級(jí)的密說(shuō)明設(shè)置升級(jí)的*p2=*p3=*p4=返回值0當(dāng)成功時(shí)*lp1=2006-1-10:0 RY_SET_UPDATE_KEY(設(shè)置升級(jí)的密說(shuō)明設(shè)置升級(jí)的 密鑰對(duì),用來(lái)加密和解密升級(jí)內(nèi)容。調(diào)用該函數(shù)需要驗(yàn)證高級(jí)密碼(或二密碼)。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備(RY_OPEN輸入?yún)?shù)function=*handle=buffer=128字節(jié)是RSA密鑰對(duì)的N(公鑰128~255字節(jié)是RSA密鑰對(duì)的D(鑰返回值0注意事項(xiàng)開(kāi)發(fā)商手中的Rockey4Smart作為母鎖,要設(shè)置公鑰和私鑰。最終用戶手中的 作為子鎖,只需要有公4.2.32RY_ADD_UPDATE_HEADER(填充升級(jí)文件頭)說(shuō)明填充升級(jí)文件頭的內(nèi)容。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備 OPEN輸入?yún)?shù)function=*handle=*lp1=(bit0-驗(yàn)證UIDbit1-驗(yàn)證模塊有效,bit4–校正鎖內(nèi)時(shí)鐘驗(yàn)證HID,buffer= 升級(jí)文件頭的內(nèi)容,不同的偏移位置有不0*handle=*lp1=(bit0-驗(yàn)證UIDbit1-驗(yàn)證模塊有效,bit4–校正鎖內(nèi)時(shí)鐘驗(yàn)證HID,buffer= 升級(jí)文件頭的內(nèi)容,不同的偏移位置有不03——要綁定UID區(qū)間的起始47——要綁定UID區(qū)間的截止811——要綁定12151617返回值04.2.33RY_ADD_UPDATE_CONTENT(填充升級(jí)文件內(nèi)說(shuō)明填充升級(jí)文件內(nèi)容中的數(shù)據(jù)。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備 OPEN輸入?yún)?shù)function=*handle=*p1=代碼(0表示升級(jí)內(nèi)存,1表示升級(jí)計(jì)時(shí)單元,2表示升級(jí)計(jì)次單元,3表示升級(jí)算4表示升級(jí)UID,5表示升級(jí)模塊字其它參數(shù)依據(jù)p1不同的代碼有不同的意義當(dāng)p1=0(升級(jí)內(nèi)存)時(shí)*p2=*p3= 要升級(jí)內(nèi)存的長(zhǎng)度,此長(zhǎng)度一次不可大于119字節(jié),升級(jí)內(nèi)存的偏移位置+升級(jí)存的長(zhǎng)度不可以大于2000字節(jié)buffer=當(dāng)p1=1(升級(jí)計(jì)時(shí)單元)時(shí)*p2=0為基礎(chǔ)的計(jì)時(shí)單元號(hào),64個(gè)計(jì)時(shí)單元,取值范圍0- 1日期,2小時(shí),=3*p2=0為基礎(chǔ)的計(jì)時(shí)單元號(hào),64個(gè)計(jì)時(shí)單元,取值范圍0- 1日期,2小時(shí),=3Buffer當(dāng)*p3=1時(shí),先要調(diào)用RY_GET_TIME_DWORD函數(shù),在Buffer中是日期轉(zhuǎn)換成的分鐘值。當(dāng)*p3=2時(shí),Buffer=要升級(jí)的小時(shí)數(shù)當(dāng)*p3=3時(shí),Buffer=要升級(jí)的天當(dāng)p1=2(升級(jí)計(jì)次單元)時(shí)*p2=0為基礎(chǔ)的計(jì)次單元號(hào),64個(gè)計(jì)次單元,取值范圍0- 1可遞減,0buffer=當(dāng)p1=3(升級(jí)算法)時(shí)buffer=p1=4(升級(jí)UID)時(shí)buffer=當(dāng)p1=5(升級(jí)模塊字)*p2= 1可遞減,0buffer=返回值0說(shuō)明生成升級(jí)文也就是把文件頭和文件內(nèi)容經(jīng)過(guò)加密用該函數(shù)前需要先打開(kāi)設(shè)OPEN輸入?yún)?shù)function=*handle=*p1=子鎖基本密碼*p2=子鎖基本密碼如果buffer為NULL,將在p1返回生成文件的長(zhǎng)度;如果不為NULL,buffer中被寫入升件的內(nèi)返回值04.2.35RY_UPDATE_EX(升說(shuō)明升級(jí)加密鎖。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備件的內(nèi)返回值04.2.35RY_UPDATE_EX(升說(shuō)明升級(jí)加密鎖。調(diào)用該函數(shù)前需要先打開(kāi)設(shè)備OPEN輸入?yún)?shù)function=*handle=buffer=由RY_UPDATE_GEN_EX返回值0注意事項(xiàng)調(diào)用此函數(shù)前,要先調(diào)用RY_UPDATE_GEN_EX,生成升級(jí)文件調(diào)用此函數(shù)前,要保證鎖內(nèi)有升級(jí)公4.3錯(cuò)誤編03456789有ROCKEY但基本密碼錯(cuò)ID寫數(shù)據(jù)Find遞減算法中常數(shù)值同一個(gè)進(jìn)程中打開(kāi)數(shù)DES密鑰DES加密錯(cuò)DES解密錯(cuò)RSA加密錯(cuò)誤沒(méi)有找到給定要求錯(cuò)誤給出UID誤(參數(shù)錯(cuò)誤)讀寫操作給出的塊索引錯(cuò)誤GenUID功能GenUID功能讀記錄錯(cuò)(Windows錯(cuò)誤)寫記錄錯(cuò)(Windows內(nèi)部錯(cuò)誤內(nèi)部錯(cuò)不是Mod無(wú)效升級(jí)包無(wú)不允許遞RSA類型錯(cuò)未知錯(cuò)4.4為了方便初次使用加密鎖的開(kāi)發(fā)者盡快入門,下面根據(jù)基本功能出發(fā),給出幾個(gè)編程示例供RC4MART用,至于怎樣用好加密鎖在這些示例中并未體現(xiàn)。在本節(jié)內(nèi)容的“靈活綜合應(yīng)用”中提供一些加(以直接參見(jiàn)本章靈活綜合應(yīng)用示例就編程時(shí)可能會(huì)遇到的一些問(wèn)題做些簡(jiǎn)單的說(shuō)明第一、因是高級(jí)密碼,只在開(kāi)發(fā)商定制寫入加密鎖里面的內(nèi)容的時(shí)候才應(yīng)該有效的值,在最終的用戶程序里面,p3,p40第二、ROCKEY4SMART函數(shù)的所有參數(shù)均不能是NULLBufferNULL下面這些程序是用VC6.0編寫的控制臺(tái)程序,從一個(gè)未加密的程序開(kāi)始,我們逐步展現(xiàn)ROCKEY4SMARTROCKEY4SMART加密鎖來(lái)完成需要的加密功巧,使用任何語(yǔ)言的程序員都能夠很容易的看懂這是一段沒(méi)有加密過(guò)的源程序,我們的這是一段沒(méi)有加密過(guò)的源程序,我們的加密工作將從這里開(kāi)始。如4.4.2查找加密鎖—在程序開(kāi)始的地方插入了一段查找特定密碼的加密鎖的操作,如果找到加密鎖,程序繼行,如果沒(méi)有找到加密鎖,程序直接退#include<stdio.h>#include //IncludeROCKEY4SMARTHeadervoid{//WORDWORDhandle,p1,p2,p3,p4;DWORDlp1,lp2;BYTEp1=0xc44c;p2=p3=0; //Programneedn'tPassword3,Setto0p4= //Programneedn'tPassword4,Setto//TrytofindspecifiedROCKEY4retcode=Rockey(RY_FIND,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode) //Notfound{#include<stdio.h>void{//Anyonebeginfromhere.}ROCKEY4SMARTAPI中的一個(gè)"查找鎖"即可。請(qǐng)參考前文"ROCKEY4SMARTAPIROCKEY4SMARTAPI中的一個(gè)"查找鎖"即可。請(qǐng)參考前文"ROCKEY4SMARTAPI服務(wù)"一節(jié)中關(guān)于"查找鎖"功能的介紹嘗試執(zhí)行上面的程序,看看在插鎖與不插鎖兩種情況下有什么不4.4.3打開(kāi)加密鎖--在程序開(kāi)始的地方插入了一段打開(kāi)特定密碼的加密鎖的操作,如果可以打開(kāi)找到的加密程序繼續(xù)執(zhí)行,如果不能打開(kāi)加密鎖,程序直接退#include<stdio.h>#include //IncludeROCKEY4SMARTHeadervoid{//WORDWORDhandle,p1,p2,p3,p4;//ROCKEY4SMARTVariableDWORDlp1,lp2; //ROCKEY4SMARTVariableBYTEbuffer[1024]; //ROCKEY4SMARTVariablep1=0xc44c; //ROCKEY4SMARTDemoPassword1p2= //ROCKEY4SMARTDemop3=0; //Programneedn'tPassword3,Setto0p4= //Programneedn'tPassword4,Setto//Trytofindspecifiedretcode=Rockey(RY_FIND,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode) //Notfound{printf("ROCKEYnotfound!\n");}//printf("Hello}4.4.4用戶內(nèi)存--使用編輯器(編輯器的使用參見(jiàn)《 4.4.4用戶內(nèi)存--使用編輯器(編輯器的使用參見(jiàn)《 SMART實(shí)用工具手冊(cè)》)或采用API方式初始加密鎖在低地址區(qū)中寫入 FeiTian!”,然后把字符串的內(nèi)容讀取參見(jiàn)示例--Step3,Step4初始化加密鎖,寫入 FeiTian!”示例--#include<stdio.h>#include //IncludeROCKEY4SMARTHeadervoid{//WORDWORDhandle,p1,p2,p3,p4;//ROCKEY4SMARTprintf("ROCKEYnotfound!\n");}retcode=Rockey(RY_OPEN,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode) //Error{printf("ErrorCode:%d\n",retcode);}//printf("Helloretcode=Rockey(RY_CLOSE,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode){printf("ErrorCode:%d\n",retcode);}}DWORDlp1,////SMARTSMART====////SMARTSMARTProgramneedn'tPassword3,SettoProgramneedn'tDWORDlp1,////SMARTSMART====////SMARTSMARTProgramneedn'tPassword3,SettoProgramneedn'tPassword4,SettoTrytofindretcode=Rockey(RY_FIND,&handle,&lp1,&lp2,&p1,&p3,&p4,if{//Notprintf("ROCKEYnot}{//printf("ErrorCode:%d\n",}=0;//=//strcpy((char*)buffer,"HelloFeiTian!retcode=Rockey(RY_WRITE_EX,&handle,&lp1,&lp2,&p1,&p2,&p3,if{//printf("ErrorCode:%d\n",}printf("Write:%s\n",retcode=Rockey(RY_CLOSE,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,if在下面這個(gè)例子里面,通過(guò)上面示例--Step3開(kāi)發(fā)的過(guò)程中已經(jīng)在下面這個(gè)例子里面,通過(guò)上面示例--Step3開(kāi)發(fā)的過(guò)程中已經(jīng)“HelloFeiTian!”寫入到密鎖中,在下面示例--Step4程序的執(zhí)行過(guò)程中,動(dòng)態(tài)的從加密鎖中把字符串的內(nèi)容讀回讀出特定內(nèi)存中的內(nèi)容,示例--#include<stdio.h>#include //IncludeROCKEY4SMARTHeadervoid{//WORDWORDhandle,p1,p2,p3,p4;//ROCKEY4SMARTVariableDWORDlp1,lp2; //ROCKEY4SMARTVariableBYTEbuffer[1024]; //ROCKEY4SMARTVariablep1=0xc44c; //ROCKEY4SMARTDemoPassword1p2= //ROCKEY4SMARTDemop3=0; //Programneedn'tPassword3,Setto0p4= //Programneedn'tPassword4,Setto//Trytofindspecifiedretcode=Rockey(RY_FIND,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode) //Notfound{printf("ROCKEYnotfound!\n");}retcode=Rockey(RY_OPEN,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode) //Error{{printf("ErrorCode:%d\n",retcode);}}4.4.5利用加密鎖生成真正的隨機(jī)數(shù)--4.4.5利用加密鎖生成真正的隨機(jī)數(shù)--個(gè)固定地址肯定被寫入了另一個(gè)隨機(jī)數(shù),這樣抗跟蹤能力便大大增加#include<stdio.h>#include //IncludeROCKEY4SMARTHeadervoidprintf("ErrorCode:%d\n",retcode);}p1=0;//p2= //buffer[14]=retcode=Rockey(RY_READ_EX,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode) //Error{printf("ErrorCode:%d\n",retcode);}//printf("%s\n",retcode=Rockey(RY_CLOSE,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,if{printf("ErrorCode:%d\n",retcode);}}{//WORDWORDhandle,p1,DWORDlp1,p4;//ROCKEY4SMART////SMARTSMART====////SMARTSMART{//WORDWORDhandle,p1,DWORDlp1,p4;//ROCKEY4SMART////SMARTSMART====////SMARTSMARTProgramneedn'tPassword3,SettoProgramneedn'tPassword4,SettoTrytofindspecifiedif{//Notprintf("ROCKEYnot}retcode=Rockey(RY_OPEN,&handle,&lp1,&lp2,&p1,&p2,&p4,{//printf("ErrorCode:%d\n",}retcode=Rockey(RY_RANDOM,&handle,&lp1,&lp2,&p1,&p2,&p4,if{//printf("ErrorCode:%d\n",}sprintf(buffer,"%04X",p1=0;//p2=4;//Lengthp3=1;retcode=Rockey(RY_WRITE_EX,&handle,&lp1,&lp2,&p1,&p2,&p3,p2=4;//Lengthp3=1;retcode=Rockey(RY_WRITE_EX,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,if //{printf("ErrorCode:%d\n",retcode);}printf("Write:%s\n",p1=0;//p2=4;//buffer[4]=retcode=Rockey(RY_READ_EX,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode) //Error{printf("ErrorCode:%d\n",retcode);}printf("Read:%s\n",retcode=Rockey(RY_CLOSE,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode){printf("ErrorCode:%d\n",retcode);}}4.4.6種子碼--RK4MART)4.4.6種子碼--RK4MART)或采用API定種子碼(根據(jù)實(shí)際情況也可以由程序內(nèi)部傳入等方法)的返回碼,種子碼的算法在加密鎖的內(nèi)例--Step6,Step7讀出固定種子碼(0x12345678)的返回碼,示例--#include<stdio.h>#include //IncludeROCKEY4SMARTHeadervoid{WORDWORDhandle,p1,p2,p3,p4;//ROCKEY4SMARTVariableDWORDlp1,lp2; //ROCKEY4SMARTVariableBYTEbuffer[1024]; //ROCKEY4SMARTVariablep1=0xc44c; //ROCKEY4SMARTDemoPassword1p2= //ROCKEY4SMARTDemop3=0; //Programneedn'tPassword3,Setto0p4= //Programneedn'tPassword4,Setto//Trytofindspecifiedretcode=Rockey(RY_FIND,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode) //Notfound{printf("ROCKEYnotfound!\n");}retcode=Rockey(RY_OPEN,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode) //Error{printf("ErrorCode:%d\n",retcode);}檢驗(yàn)返回碼的正確性,決定是否繼續(xù)執(zhí)行程序,示例檢驗(yàn)返回碼的正確性,決定是否繼續(xù)執(zhí)行程序,示例--#include<stdio.h>#include //IncludeROCKEY4SMARTHeadervoid{WORDWORDhandle,p1,p2,p3,p4;//ROCKEY4SMARTVariableDWORDlp1,lp2; //ROCKEY4SMARTVariableBYTEbuffer[1024]; //ROCKEY4SMARTVariablep1= //ROCKEY4SMARTDemo//seedRockeylp2=0x12345678;retcode=Rockey(RY_SEED,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode) //Error{printf("ErrorCode:%d\n",retcode);}printf("Seed:%04X%04X%04X%04X\n",p1,p2,p3,//Closeretcode=Rockey(RY_CLOSE,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode){printf("ErrorCode:%d\n",retcode);}}===//ROCKEY4SMARTDemoProgramneedn'tPassword3,Setto0Programneedn'tPassword4,SettoTrytofind===//ROCKEY4SMARTDemoProgramneedn'tPassword3,Setto0Programneedn'tPassword4,SettoTrytofindspecifiedif{//Notprintf("ROCKEYnot}if{//printf("ErrorCode:%d\n",}//seedlp2=if{//printf("ErrorCode:%d\n",}if(p1==0xD03A&&p2==0x94D6&&p3==0x96A9&&{}//Closeretcode=Rockey(RY_CLOSE,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,4.4.7用戶ID--使用編輯器(編輯器的使用參見(jiàn)《 SMART實(shí)用工4.4.7用戶ID--使用編輯器(編輯器的使用參見(jiàn)《 SMART實(shí)用工具手冊(cè)》)或采用API方式設(shè)置入用戶 號(hào),常用于軟件版本、產(chǎn)品種類或其他加密處理等方面等。參見(jiàn)示例--Step8,Step9初始化鎖寫入用戶ID--示#include<stdio.h>#include //IncludeROCKEY4SMARTHeadervoid{//WORDWORDhandle,p1,p2,p3,p4;//ROCKEY4SMARTVariableDWORDlp1,lp2; //ROCKEY4SMARTVariableBYTEbuffer[1024]; //ROCKEY4SMARTVariablep1=0xc44c;//ROCKEY4SMARTDemoPassword1p2=0xc8f8;//ROCKEY4SMARTDemoPassword2p3=0x0799;//ROCKEY4SMARTDemoPassword3p4=0xc43b;//ROCKEY4SMARTDemoPassword4//Trytofindspecifiedretcode=Rockey(RY_FIND,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode) //Notfound{printf("ROCKEYnot<注意>Step8需要高級(jí)密碼(二級(jí)密碼)if{printf("ErrorCode:%d\n",retcode);}}檢驗(yàn)用戶ID,如果用戶ID0x88888888,輸出“HelloDEMO檢驗(yàn)用戶ID,如果用戶ID0x88888888,輸出“HelloDEMO!”,示例--#include<stdio.h>#include //IncludeROCKEY4SMARTHeadervoid{//}retcode=Rockey(RY_OPEN,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode) //Error{printf("ErrorCode:%d\n",retcode);}lp1=retcode=Rockey(RY_WRITE_USERID,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,if(retcode)//{printf("ErrorCode:%d\n",retcode);}printf("WriteUserID:%08X\n",retcode=Rockey(RY_CLOSE,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode){printf("ErrorCode:%d\n",retcode);}}WORDWORDhandle,p1,p2,DWORDlp1,lp2;p4;//ROCKEY4SMART////SMARTSMART====////SMARTWORDWORDhandle,p1,p2,DWORDlp1,lp2;p4;//ROCKEY4SMART////SMARTSMART====////SMARTSMARTProgramneedn'tPassword3,SettoProgramneedn'tPassword4,SettoTrytofindspecifiedif{//Notprintf("ROCKEYnot}if{//printf("ErrorCode:%d\n",}lp1=retcode=Rockey(RY_READ_USERID,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode)//Error{printf("ErrorCode:%d\n",retcode);}ifprintf("Hello{4.4.8模塊字--RK4MART)或采用API4.4.8模塊字--RK4MART)或采用API塊字,亦可同時(shí)設(shè)置其屬性,然后在用戶程序中可以檢驗(yàn)其模塊是否有效及是否可以遞減,來(lái)限功能則可以用于軟件限次使用等加密處理方面。參見(jiàn)示例--Step10,Step11,Step12初始化鎖設(shè)置模塊字,如設(shè)置模 為有效,屬性為不可以遞減,示例--#include<stdio.h>#include //IncludeROCKEY4SMARTHeadervoid{//WORDWORDhandle,p1,p2,p3,p4;//ROCKEY4SMARTVariableDWORDlp1,lp2; //ROCKEY4SMARTVariableBYTEbuffer[1024]; //ROCKEY4SMARTVariablep1=0xc44c;//ROCKEY4SMARTDemoPassword1p2=0xc8f8;//ROCKEY4SMARTDemoPassword2p3=0x0799;//ROCKEY4SMARTDemoPassword3p4=0xc43b;//ROCKEY4SMARTDemoPassword4//Trytofindspecified:運(yùn)行示例Step10需要高級(jí)密碼(二級(jí)密碼)}retcode=Rockey(RY_CLOSE,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode){printf("ErrorCode:%d\n",retcode);}}在用戶程序中如果模塊0有效,輸出“HelloFeiTian!”,在用戶程序中如果模塊0有效,輸出“HelloFeiTian!”,否則停止或退出,示例--#include<stdio.h>#include //IncludeROCKEY4SMARTHeaderif //Not{printf("ROCKEYnotfound!\n");}retcode=Rockey(RY_OPEN,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode) //Error{printf("ErrorCode:%d\n",retcode);}p1=p2=p3=retcode=Rockey(RY_SET_MODULE,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,if{printf("ErrorCode:%d\n",retcode);}printf("SetMODULE0:Pass=%04XDecreasenoallow\n",retcode=Rockey(RY_CLOSE,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode){printf("ErrorCode:%d\n",retcode);}}void{//WORDWORDhandle,p1,DWORDlp1,p4;//ROCKEY4SMART//SMART//SMART===void{//WORDWORDhandle,p1,DWORDlp1,p4;//ROCKEY4SMART//SMART//SMART====////SMARTSMARTProgramneedn'tPassword3,SettoProgramneedn'tPassword4,Settotofindspecifiedif{//Notprintf("ROCKEYnot}retcode=Rockey(RY_OPEN,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,if{//printf("ErrorCode:%d\n",}p1=retcode=Rockey(RY_CHECK_MODULE,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,if{printf("ErrorCode:%d\n",retcode);在 中設(shè)置模塊的定義中,設(shè)p2=3(軟件運(yùn)行次數(shù)),p3=1(在 中設(shè)置模塊的定義中,設(shè)p2=3(軟件運(yùn)行次數(shù)),p3=1(遞減有效),即通次,如示例--模0(p1=0)達(dá)到限制軟件的運(yùn)行次3#include<stdio.h>#include //IncludeROCKEY4SMARTHeadervoid{//WORDWORDhandle,p1,p2,p3,p4;//ROCKEY4SMARTVariableDWORDlp1,lp2; //ROCKEY4SMARTVariableBYTEbuffer[1024]; //ROCKEY4SMARTVariablep1=0xc44c; //ROCKEY4SMARTDemoPassword1p2= //ROCKEY4SMARTDemop3=0; //Programneedn'tPassword3,Setto0p4= //Programneedn'tPassword4,Setto//Trytofindspecifiedretcode=Rockey(RY_FIND,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode) //Notfound{}ifretcode=Rockey(RY_CLOSE,&handle,&lp1,&lp2,&p1,&p2,&p3,&p4,buffer);if(retcode){printf("ErrorCode:%d\n",retcode);}}printf("ROCKEYnot}if{//printf("ErrorCode:%d\n",printf("ROCKEYnot}if{//printf("ErrorCode:%d\n",}p1=if{printf("ErrorCode:%d\n",retcode);}if{}{retcode=Rockey(RY_DECREASE,&handle,{&lp1,&lp2,&p1,printf("ErrorCode:%d\n",}}//4.4.9同號(hào)鎖級(jí)聯(lián)-- 加密鎖擁有同號(hào)級(jí)聯(lián)的功能,在同一4.4.9同號(hào)鎖級(jí)聯(lián)-- 加密鎖擁有同號(hào)級(jí)聯(lián)的功能,在同一臺(tái)計(jì)算機(jī)上可以插入多把相同密碼相同或不相同
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備抵押貸款協(xié)議范本
- 監(jiān)理責(zé)任聲明
- 弘揚(yáng)專業(yè)的決心
- 個(gè)人購(gòu)車貸款居間服務(wù)合同
- 計(jì)算機(jī)軟件采購(gòu)協(xié)議格式
- 帝爾婚慶服務(wù)合同中的保密條款
- 解除采購(gòu)合同安排
- 質(zhì)量保證書品質(zhì)第一客戶至上
- 設(shè)備采購(gòu)合同范文
- 商業(yè)物業(yè)保安合作協(xié)議
- 教育學(xué)原理項(xiàng)賢明第九章教師與學(xué)生
- 嚴(yán)禁在學(xué)校組織宗教活動(dòng)
- 2023-2024學(xué)年廣東省湛江市赤坎區(qū)某中學(xué)七年級(jí)上學(xué)期期末數(shù)學(xué)試卷及參考答案
- (完整)蘇教版小學(xué)五年級(jí)上冊(cè)數(shù)學(xué)口算練習(xí)題
- 北京市西城區(qū)2022-2023學(xué)年高三上學(xué)期期末生物試題 附解析
- 2024年云南省中考物理試題含答案
- GB/T 28569-2024電動(dòng)汽車交流充電樁電能計(jì)量
- 政府采購(gòu)評(píng)審專家考試題及答案
- 2024新能源光伏電站運(yùn)行規(guī)程
- 屋頂氣窗施工方案
- 數(shù)字化轉(zhuǎn)型與年度工作目標(biāo)計(jì)劃
評(píng)論
0/150
提交評(píng)論