锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产亚洲成归v人片在线观看,亚洲av无码国产综合专区,亚洲中文字幕乱码AV波多JI http://www.tkk7.com/openssl/category/12809.htmlJava Security, CAPICOM, CryptoAPI/CSP, BouncyCastle, Openssl, JCE/JCA, SSO, CAS, Tivoli, CA, PKI <br> <font color="#00f100">鏈珯鍐呭鍙吋瀹笽E嫻忚鍣?lt;/font> <br> <font color="#00f100">閲嶈鐨勬枃绔犲寘鍧囧惈鏈漢鐨凱GP絳懼悕錛屾湰浜烘効鎰忓鑷繁鐨勮█璁鴻礋璐?lt;/font> <br>zh-cnTue, 27 Feb 2007 12:58:11 GMTTue, 27 Feb 2007 12:58:11 GMT60RSAUtils for Java Public Encryptionhttp://www.tkk7.com/security/articles/RSAUtils_java.htmldavid.turingdavid.turingFri, 17 Nov 2006 14:30:00 GMThttp://www.tkk7.com/security/articles/RSAUtils_java.htmlhttp://www.tkk7.com/security/comments/81863.htmlhttp://www.tkk7.com/security/articles/RSAUtils_java.html#Feedback0http://www.tkk7.com/security/comments/commentRss/81863.htmlhttp://www.tkk7.com/security/services/trackbacks/81863.html闃呰鍏ㄦ枃

david.turing 2006-11-17 22:30 鍙戣〃璇勮
]]>
CryptoAPI絎竴澶?/title><link>http://www.tkk7.com/security/articles/56869.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Wed, 05 Jul 2006 15:18:00 GMT</pubDate><guid>http://www.tkk7.com/security/articles/56869.html</guid><wfw:comment>http://www.tkk7.com/security/comments/56869.html</wfw:comment><comments>http://www.tkk7.com/security/articles/56869.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/security/comments/commentRss/56869.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/security/services/trackbacks/56869.html</trackback:ping><description><![CDATA[<p> <font color="#000000">[杞琞<a >http://www.chinaitpower.com/A200507/2005-07-27/175804.html</a><br /><br />涓錛氬噯澶囧伐浣?br />涓鑸繀欏誨寘鍚涓嬪ご</font> <a target="_blank"> <font color="#000000">鏂囦歡</font> </a> <font color="#000000">浠ュ強(qiáng)瀹氫箟<br />#include <br />#include <br />#include <br />#define MY_ENCODING_TYPE聽(tīng) (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)<br />聽(tīng)褰撳寘鍚玾incrypt.h澶?/font> <a target="_blank"> <font color="#000000">鏂囦歡</font> </a> <font color="#000000">鏃訛紝涓鑸兘闇瑕佸畾涔?define _WIN32_WINNT 0x錛堝叿浣撶殑鍊鹼級(jí)錛屽惁鍒欏皢寰楀埌濡備笅閿欒錛歟rror C2065: undeclared identifier錛屼笉鍚岀殑鎿嶄綔</font> <a target="_blank"> <font color="#000000">緋葷粺</font> </a> <font color="#000000">涓嶅悓瀹氫箟濡備笅錛?br />Windows Server 2003 family _WIN32_WINNT>=0x0502<br />WINVER>=0x0502<br />Windows XP _WIN32_WINNT>=0x0501 <br />WINVER>=0x0501<br />Windows 2000 _WIN32_WINNT>=0x0500<br />WINVER>=0x0500<br />Windows NT 4.0 _WIN32_WINNT>=0x0400<br />WINVER>=0x0400<br />Windows Me _WIN32_WINDOWS=0x0500<br />WINVER>=0x0500<br />Windows 98 _WIN32_WINDOWS>=0x0410<br />WINVER>=0x0410<br />Windows 95 _WIN32_WINDOWS>=0x0400<br />WINVER>=0x0400<br />Internet Explorer 6.0 _WIN32_IE>=0x0600 <br />Internet Explorer 5.6 _WIN32_IE>=0x0560 <br />Internet Explorer 5.01, 5.5 _WIN32_IE>=0x0501 <br />Internet Explorer 5.0, 5.0a, 5.0b _WIN32_IE>=0x0500 <br />Internet Explorer 4.01 _WIN32_IE>=0x0401 <br />Internet Explorer 4.0 _WIN32_IE>=0x0400 <br />Internet Explorer 3.0, 3.01, 3.02 _WIN32_IE>=0x0300</font> </p> <p> <font color="#000000">浜岋細(xì)浜?jiǎn)瑙e熀鏈煡璇?br />CryptoAPI鐨勯厤緗俊鎭瓨鍌ㄥ湪娉ㄥ唽琛ㄤ腑錛屽寘鎷涓嬪瘑閽ワ細(xì) <br />HKEY錛縇OCAL錛縈ACHINE錛糞OFTWARE錛糓icrosoft \ Cryptography \Defaults<br />HKEY_CURRENT_USER\ Software \ Microsoft\ Cryptography \Providers<br />---- CryptoAPI浣跨敤涓ょ瀵嗛挜錛氫細(xì)璇濆瘑閽ヤ笌鍏叡/縐佷漢瀵嗛挜瀵廣備細(xì)璇濆瘑閽ヤ嬌鐢ㄧ浉鍚岀殑鍔犲瘑鍜岃В瀵嗗瘑閽ワ紝榪欑綆楁硶杈冨揩錛屼絾蹇呴』淇濊瘉瀵嗛挜鐨勫畨鍏ㄤ紶閫掋傚叕鍏?縐佷漢瀵嗛挜瀵逛嬌鐢ㄤ竴涓叕鍏卞瘑閽ュ拰涓涓浜哄瘑閽ワ紝縐佷漢瀵嗛挜鍙湁涓撲漢鎵嶈兘浣跨敤錛屽叕鍏卞瘑閽ュ彲浠ュ箍娉涗紶鎾傚鏋滃瘑閽ュ涓殑涓涓敤浜庡姞瀵嗭紝鍙︿竴涓竴瀹氱敤浜庤В瀵嗐傚叕鍏?縐佷漢瀵嗛挜瀵圭畻娉曞緢鎱紝涓鑸彧鐢ㄤ簬鍔犲瘑灝忔壒鏁版嵁錛屼緥濡傜敤浜庡姞瀵嗕細(xì)璇濆瘑閽ャ侰ryptoAPI鏀寔涓ょ鍩烘湰鐨勭紪鐮佹柟娉曪細(xì)嫻佸紡緙栫爜鍜屽潡緙栫爜銆傛祦寮忕紪鐮佸湪鏄庣爜鏂囨湰鐨勬瘡涓浣嶄笂鍒涘緩緙栫爜浣嶏紝閫熷害杈冨揩錛屼絾瀹夊叏鎬ц緝浣庛傚潡緙栫爜鍦ㄤ竴涓畬鏁寸殑鍧椾笂錛堜竴鑸負(fù)64浣嶏級(jí)涓婂伐浣滐紝闇瑕佷嬌鐢ㄥ~鍏呯殑鏂規(guī)硶瀵硅緙栫爜鐨勬暟鎹繘琛岃垗鍏ワ紝浠ョ粍鎴愬涓畬鏁寸殑鍧椼傝繖縐嶇畻娉曢熷害杈冩參錛屼絾鏇村畨鍏ㄣ?</font> </p> <p> <font color="#000000">涓夛細(xì)涓嬮潰榪涘叆鍏蜂綋鐨勭紪紼嬄?<br />涓錛?Creating a Key Container and Generating Keys<br />聽(tīng) 鍒涘緩涓涓瘑閽ュ鍣紝鍦ㄨ繘琛屽姞瀵嗭紝瑙e瘑</font> <a target="_blank"> <font color="#000000">鏂囦歡</font> </a> <font color="#000000">錛屽茍涓旂鍚嶇殑鏃跺欙紝蹇呴』闇瑕佷竴涓叕/縐侀挜瀵癸紝涓嬮潰鎴戜滑灝辨潵鍒涘緩榛樿鐨勫瘑閽ュ鍣紝瑕佹敞鎰忕殑鏄垱寤哄瘑閽ュ鍣ㄥ茍涓嶄細(xì)鑷姩浜х敓鍏?縐侀挜瀵?<br />聽(tīng) 涓嬮潰鏄垜浠?/font> <a target="_blank"> <font color="#000000">紼嬪簭</font> </a> <font color="#000000">鐨勪換鍔★細(xì)<br />聽(tīng) 1錛屽亣濡傚瘑閽ュ鍣ㄤ笉瀛樺湪鍒欏垱寤轟竴涓?br />聽(tīng) 2錛屽亣濡傜鍚嶅瘑閽ヤ笉瀛樺湪鍒欏湪瀵嗛挜瀹瑰櫒閲屽垱寤轟竴涓?br />聽(tīng) 3錛屽亣濡備氦鎹㈠瘑閽ヤ笉瀛樺湪鍒欏湪瀵嗛挜瀹瑰櫒閲屽垱寤轟竴涓?br />聽(tīng) 4錛岃幏鍙朇SP涓殑涓浜涘弬鏁?br />聽(tīng) 涓嬮潰鏄叿浣撶殑姝ラ錛?br />聽(tīng) 1錛岃繛鎺ョ己鐪佺殑CSP<br />BOOL WINAPI CryptAcquireContext(<br />聽(tīng) HCRYPTPROV* phProv,聽(tīng)聽(tīng) //out<br />聽(tīng) LPCTSTR pszContainer, //in<br />聽(tīng) LPCTSTR pszProvider,聽(tīng) //in<br />聽(tīng) DWORD dwProvType,聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in<br />聽(tīng) DWORD dwFlags聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in<br />);<br />絎竴涓弬鏁版槸榪斿洖鐨凜SP鍙ユ焺錛岀浜屼釜鏄瘑閽ュ鍣ㄧ殑鍚嶅瓧錛岀涓変釜鏄疉 null-terminated string that specifies the name of the CSP to be used.絎洓涓槸鎸囧畾鎻愪緵鐨勭被鍨嬨備緥濡傦細(xì)CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0))錛?br />濡傛灉褰撳墠鏈哄櫒鐨勬湭鏇捐緗繃緙虹渷鐨勫瘑閽ュ鍣紝鍥犳蹇呴』涓烘満鍣ㄥ垱寤虹己鐪佺殑瀵嗛挜瀹瑰櫒銆?<br />CryptAcquireContext( &hCryptProv, UserName, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET)澶у鏈夋病鏈夌湅鍒幫紝鍙槸鏈鍚庝竴涓弬鏁頒笉鍚岃屽凡錛屽浜?jiǎn)涓涓狢RYPT_NEWKEYSET鑰屽凡銆?br />聽(tīng) 2錛屽彇寰桟SP鐨勫弬鏁?br />BOOL WINAPI CryptGetProvParam(<br />聽(tīng) HCRYPTPROV hProv,<br />聽(tīng) DWORD dwParam,<br />聽(tīng) BYTE* pbData,<br />聽(tīng) DWORD* pdwDataLen,<br />聽(tīng) DWORD dwFlags<br />);<br />絎竴涓弬鏁版槸CSP鐨勫彞鏌勶紝絎簩涓弬鏁版槸闇瑕佸彇寰楃殑鍏蜂綋鍙傛暟瀵硅薄錛堢被鍨嬫瘮杈冨錛屽叿浣撹鐪婱SDN錛夈?br />渚嬪瓙錛欳ryptGetProvParam(hCryptProv, PP_CONTAINER, (BYTE *)szUserName, &dwUserNameLen, 0)<br />聽(tīng) 3錛屽嚱鏁拌繑鍥炴墍鑾峰彇瀵嗛挜綾誨瀷鐨勫彞鏌勶紙0琛ㄥけ璐ワ紝闈?琛ㄦ垚鍔燂級(jí)<br />BOOL WINAPI CryptGetUserKey(<br />聽(tīng) HCRYPTPROV hProv,<br />聽(tīng) DWORD dwKeySpec,<br />聽(tīng) HCRYPTKEY* phUserKey<br />);<br />聽(tīng) 鍙傛暟姣旇緝綆鍗曪紝鍙皥璋堢浜屾鍙傛暟錛屽畠鍙互鏄疉T_KEYEXCHANGE錛堜氦鎹㈠瘑閽ワ級(jí) or AT_SIGNATURE錛堢鍚嶅瘑閽ワ級(jí)錛屼緥濡傦細(xì)<br />CryptGetUserKey(hCryptProv,AT_KEYEXCHANGE,&hKey)<br />聽(tīng) 4錛屼駭鐢熶竴涓殢鏈虹殑浜ゆ崲瀵嗛挜鎴栬呭叕/縐侀挜瀵?br />BOOL WINAPI CryptGenKey(<br />聽(tīng) HCRYPTPROV hProv,<br />聽(tīng) ALG_ID Algid,<br />聽(tīng) DWORD dwFlags,<br />聽(tīng) HCRYPTKEY* phKey<br />)錛?br />ALG_ID 琛ㄦ槑浜х敓縐侀挜鎵浣跨敤鐨勭畻娉曘傛湁濡備笅鍙傛暟錛?br /></font> <a target="_blank"> <font color="#000000">寰蔣</font> </a> <font color="#000000">鎻愪緵鐨勫熀鏈畻娉?br />CALG_MD2錛孋ALG_MD5錛孋ALG_SHA錛孋ALG_SHA1錛孋ALG_MAC錛孋ALG_HMAC錛孋ALG_SSL3_SHAMD5錛孋ALG_MD2錛孋ALG_MD2<br />CALG_RSA_SIGN錛孋ALG_RSA_KEYX錛孋ALG_RC2錛孋ALG_RC4錛孋ALG_DES<br /></font> <a target="_blank"> <font color="#000000">寰蔣</font> </a> <font color="#000000">鎻愪緵鐨勫寮哄瀷綆楁硶錛?br />CALG_MD2錛孋ALG_MD5錛孋ALG_SHA錛孋ALG_SHA1<br />CALG_MAC錛孋ALG_HMAC 錛孋ALG_SSL3_SHAMD5錛孋ALG_RSA_SIGN錛孋ALG_RSA_KEYX錛孋ALG_RC2錛孋ALG_RC4錛孋ALG_DES錛孋ALG_3DES_112錛孋ALG_3DES<br />浣跨敤DH鐨凜SP鏈夊涓嬩袱涓弬鏁幫紝CALG_DH_EPHEM錛孋ALG_DH_SF<br />浣跨敤鍏紑瀵嗛挜綆楁硶錛欰T_KEYEXCHANGE錛孉T_SIGNATURE<br />dwFlags,錛岃〃紺哄瘑閽ヤ嬌鐢ㄧ殑闀垮害錛屽弬鏁板彲浠ヤ負(fù)0錛岄噰鐢ㄩ粯璁ょ殑瀵嗛挜闀垮害銆傛垨鑰呮槸榪涜濡備笅鍑犱釜鍙傛暟鐨勬垨錛?br />CRYPT_ARCHIVABLE錛氳〃紺哄湪鍙ユ焺鍦ㄥ叧闂箣鍓嶉兘鑳藉琚鍑?br />CRYPT_CREATE_SALT錛氳〃紺哄瘑閽ユ寜鐓т竴涓猻alt value鏉ラ殢鏈轟駭鐢熴?br />CRYPT_EXPORTABLE錛氳〃紺哄瘑閽ュ彲浠ヤ粠CSP涓鍑哄埌BLOB錛屽洜涓轟細(xì)璇濆瘑閽ヤ駭鐢熸槸蹇呴』鍙鍑虹殑錛屾墍浠ュ繀欏昏緗?br />CRYPT_NO_SALT錛氳〃紺烘病鏈塖ALT VALUE鑾峰彇allocated for a forty-bit symmetric key<br />CRYPT_PREGEN錛氳〃紺哄湪DH鎴栬匘SS瀵嗛挜浜х敓蹇呴』鏈変釜鍒濆鍖栥?br />渚嬪錛欳ryptGenKey(hCryptProv,AT_KEYEXCHANGE,0,&hKey)<br />聽(tīng) 5錛岄噴鏀綜SP鍙ユ焺<br />BOOL WINAPI CryptReleaseContext(<br />聽(tīng) HCRYPTPROV hProv,<br />聽(tīng) DWORD dwFlags //淇濈暀瀛楋紝鐜板湪蹇呴』涓?<br />);<br />聽(tīng) 6錛屼負(fù)CSP澧炲姞涓涓猺eference count錛堢敤鏉ヨ窡韙狢OM瀵硅薄鐨勬暣鏁板鹼紝褰撳璞″垱寤猴紝鍊間負(fù)1銆傛瘡嬈″瀵硅薄鐨勬搷浣滈兘灝嗗鍔狅紝鑰屽瀵硅薄鐨勫叧闂皢鍑忓皯錛屽綋鍊間負(fù)0鏄紝瀵硅薄閲婃斁錛屾墍浠ヤ笌瀵硅薄鐩稿叧鎿嶄綔灝嗘棤鏁堬級(jí)<br />BOOL WINAPI CryptContextAddRef(<br />聽(tīng) HCRYPTPROV hProv,<br />聽(tīng) DWORD* pdwReserved,聽(tīng) //淇濈暀瀛楋紝蹇呴』涓篘ULL<br />聽(tīng) DWORD dwFlags聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //淇濈暀瀛楋紝蹇呴』涓?<br />);</font> </p> <p> <font color="#000000">聽(tīng) 浜岋細(xì)Deriving a Session Key from a Password<br />聽(tīng) 1錛岃繛鎺SP<br />聽(tīng) 2錛屼嬌鐢–ryptCreateHash浜х敓涓涓┖鐨凥ASH瀵硅薄<br />聽(tīng) 3錛屽瀵嗙爜榪涜HASH澶勭悊<br />聽(tīng) 4錛岄噴鏀綡ASH浠ュ強(qiáng)瀵嗙爜瀵硅薄<br />聽(tīng) 5錛岄噴鏀綜SP<br />聽(tīng) 涓嬮潰鏄叿浣撶殑姝ラ錛?br />聽(tīng) 1錛孋ryptCreateHash鍒濆鍖栦竴涓狧ASH瀵硅薄<br />BOOL WINAPI CryptCreateHash(<br />聽(tīng) HCRYPTPROV hProv,聽(tīng) //in<br />聽(tīng) ALG_ID Algid,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in<br />聽(tīng) HCRYPTKEY hKey,聽(tīng)聽(tīng)聽(tīng) //in<br />聽(tīng) DWORD dwFlags,聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in淇濈暀瀛楋紝蹇呴』涓?<br />聽(tīng) HCRYPTHASH* phHash //out<br />);<br />絎簩涓弬鏁版槸鎸囧畾HASH綆楁硶錛屾湁CALG_HMAC,CALG_MAC,CALG_MD2,CALG_MD5,CALG_SHA,CALG_SHA1,CALG_SSL3_SHAMD5銆傜涓変釜鍙傛暟瀵逛簬閭d簺keyed hash錛屼緥濡侶MAC錛孧AC綆楁硶銆備絾鏄痭onkeyed綆楁硶錛屽繀欏昏緗負(fù)0銆?br />聽(tīng) 2錛孋ryptHashData瀵規(guī)暟鎹嬌鐢℉ASH<br />BOOL WINAPI CryptHashData(<br />聽(tīng) HCRYPTHASH hHash,聽(tīng) //in,HASH瀵硅薄鍙ユ焺<br />聽(tīng) BYTE* pbData,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in,寰匟ASH鐨勬暟鎹?br />聽(tīng) DWORD dwDataLen,聽(tīng)聽(tīng) //in,寰匟ASH鏁版嵁鐨勯暱搴︼紝褰揹wFlags涓篊RYPT_USERDATA涓?鏃訛紝蹇呴』涓?<br />聽(tīng) DWORD dwFlags聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in,涓鑸負(fù)0錛屾垨鑰呬負(fù)CRYPT_USERDATA錛堢敤鍦ㄧ敤鎴瘋繘鍏?/font> <a target="_blank"> <font color="#000000">緋葷粺</font> </a> <font color="#000000">鏃墮渶瑕佽緭鍏IN錛?br />);<br />聽(tīng) 3錛孋ryptDeriveKey浠庢煇涓鏁版嵁浜х敓浼?xì)璇濆瘑閽ュQ屼粬鏈夌偣綾諱技CryptGenKey錛屼絾鏄粬浜х敓鐨勪細(xì)璇濆瘑閽ユ潵鑷浐瀹氭暟鎹紝鑰孋ryptGenKey鏄殢鏈轟駭鐢熺殑銆傚茍涓斾笉鑳戒駭鐢熷叕/縐侀挜瀵?br />BOOL WINAPI CryptDeriveKey(<br />聽(tīng) HCRYPTPROV hProv,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in,CSP鍙ユ焺<br />聽(tīng) ALG_ID Algid,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in,鎸囧畾鐨勭畻娉曪紝綾諱技CryptGenKey<br />聽(tīng) HCRYPTHASH hBaseData,聽(tīng) //in,HASH瀵硅薄鐨勫彞鏌?br />聽(tīng) DWORD dwFlags,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in,鎸囧畾浜х敓瀵嗛挜鐨勭被鍨?br />聽(tīng) HCRYPTKEY* phKey聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in,out浜х敓鐨勫瘑閽ュ彞鏌勫湴鍧<br />);<br />渚嬪錛欳ryptDeriveKey(hCryptProv, CALG_RC2, hHash, CRYPT_EXPORTABLE, &hKey)<br />聽(tīng) 4錛孋ryptDestroyHash(hHash);<br />聽(tīng) 5, CryptDestroyKey(hKey);<br />聽(tīng) 6, 鍦ㄨ繖閲屽彂鐜頒竴涓笉閿欑殑鍑芥暟錛屽氨鏄偅縐嶆彁紺鴻緭鍏ュ瘑鐮佺殑鍛戒護(hù)琛岋紙灞忓箷鍙細(xì)鍑虹幇***錛?br />聽(tīng) void GetConsoleInput(char* strInput, int intMaxChars)<br />{<br />聽(tīng)char ch;<br />聽(tīng)char minChar = ' ';<br />聽(tīng)minChar++;<br />聽(tīng)ch = getch();<br />聽(tīng)while (ch != '\r')<br />聽(tīng){<br />聽(tīng) if (ch == '\b' && strlen(strInput) > 0)<br />聽(tīng) {<br />聽(tīng)聽(tīng) strInput[strlen(strInput)-1]聽(tīng)聽(tīng) = '\0';<br />聽(tīng)聽(tīng) printf("\b \b");<br />聽(tīng) }<br />聽(tīng) else if (ch >= minChar && strlen(strInput) < intMaxChars)<br />聽(tīng) {<br />聽(tīng)聽(tīng) strInput[strlen(strInput)+1] = '\0';<br />聽(tīng)聽(tīng) strInput[strlen(strInput)]聽(tīng)聽(tīng) = ch;<br />聽(tīng)聽(tīng) putch('*');<br />聽(tīng) }<br />聽(tīng) ch = getch();<br />聽(tīng)}<br />聽(tīng)putch('\n');<br />}</font> </p> <p> <font color="#000000">聽(tīng) 涓夛細(xì)Duplicating,setting and getting Session key<br />聽(tīng) 1,榪炴帴CSP<br />聽(tīng) 2,浣跨敤CryptGenKey浜х敓涓涓細(xì)璇濆瘑閽?br />聽(tīng) 3,CryptDuplicateKey澶嶅埗浼?xì)璇濆瘑閽?br />聽(tīng) 4,CryptSetKeyParam鏀瑰彉瀵嗛挜浜х敓鐨勮繃紼?br />聽(tīng) 5,CryptGenRandom浜х敓闅忔満鏁?br />鍏蜂綋榪囩▼銆?br />1錛孋ryptDuplicateKe澶嶅埗浼?xì)璇濆瘑閽?br />BOOL WINAPI CryptDuplicateKey(<br />聽(tīng) HCRYPTKEY hKey,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in 浼?xì)璇濆瘑閽ュ彞鏌?br />聽(tīng) DWORD* pdwReserved,聽(tīng) //in 淇濈暀瀛楋紝蹇呴』涓篘ULL<br />聽(tīng) DWORD dwFlags,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in 淇濈暀瀛楋紝蹇呴』涓?<br />聽(tīng) HCRYPTKEY* phKey聽(tīng)聽(tīng)聽(tīng)聽(tīng) //out 鏂扮殑浼?xì)璇濆瘑閽?br />);<br />2,CryptSetKeyParam瀹氬埗浼?xì)璇濆瘑閽ョ殑鍙傛?br />BOOL WINAPI CryptSetKeyParam(<br />聽(tīng) HCRYPTKEY hKey,<br />聽(tīng) DWORD dwParam,聽(tīng) //in 寰堝錛屽叿浣撹鐪婱SDN<br />聽(tīng) BYTE* pbData,<br />聽(tīng) DWORD dwFlags聽(tīng) //in聽(tīng) 鍙湁鍦╠wParam=KP_ALGID鎵嶈浣跨敤<br />);<br />渚嬪CryptSetKeyParam(hOriginalKey, KP_MODE, (BYTE*)&dwMode, 0)(dwMode = CRYPT_MODE_ECB)<br />3,CryptGenRandom涓虹┖闂翠駭鐢熼殢鏈哄瓧鑺?br />BOOL WINAPI CryptGenRandom(<br />聽(tīng) HCRYPTPROV hProv,<br />聽(tīng) DWORD dwLen,聽(tīng)聽(tīng)聽(tīng) //闇瑕佷駭鐢熺殑闅忔満姣旂壒鏁?br />聽(tīng) BYTE* pbBuffer聽(tīng) //闇瑕佽繑鍥炴暟鎹殑絀洪棿錛岃繖涓猵bBuffer鍙互絳変簬CryptSetKeyParam鐨刾bData<br />);<br />渚嬪錛欳ryptGenRandom(hCryptProv, 8, pbData)<br />4,CryptGetKeyParam鑾峰彇瀵嗛挜鐨勪竴浜涘弬鏁?br />BOOL WINAPI CryptGetKeyParam(<br />聽(tīng) HCRYPTKEY hKey,<br />聽(tīng) DWORD dwParam,聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in,鍙傛暟浼楀<br />聽(tīng) BYTE* pbData,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //out錛岃幏鍙朆YTE鏁版嵁鐨勬寚閽?br />聽(tīng) DWORD* pdwDataLen, //out錛岃幏鍙朆YTE鏁版嵁鐨勯暱搴?br />聽(tīng) DWORD dwFlags聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //鍏抽敭瀛楋紝蹇呴』涓?<br />);<br />渚嬪錛欳ryptGetKeyParam(hKey, KP_IV, pbData, &dwCount, 0)</font> </p> <p> <br /> <font color="#000000">聽(tīng) 鍥涳細(xì)Exporting a Session Key<br />聽(tīng) 1,榪炴帴CSP<br />聽(tīng) 2,CryptGetUserKey鑾峰彇鍏?縐侀挜瀵瑰拰浜ゆ崲瀵嗛挜錛屽叕縐侀挜鐢ㄦ潵絳懼悕錛岃屼氦鎹㈠瘑閽ョ敤鏉ュ鍑轟細(xì)璇濆瘑閽?br />聽(tīng) 3,CryptGenKey浜х敓浼?xì)璇濆瘑閽?br />聽(tīng) 4,CryptExportKey鍒涘緩綆鍗曞寘鍚湁浼?xì)璇濆瘑閽ョ殑key BLOB<br />聽(tīng) 5,閲婃斁澶勭悊錛?br />聽(tīng) 鍏蜂綋榪囩▼錛?br />1,CryptExportKey鍑芥暟瀵煎嚭瀵嗛挜<br />BOOL WINAPI CryptExportKey(<br />聽(tīng) HCRYPTKEY hKey,聽(tīng)聽(tīng)聽(tīng)聽(tīng) //闇瑕佸鍑虹殑瀵嗛挜鍙ユ焺<br />聽(tīng) HCRYPTKEY hExpKey,聽(tīng) //灝嗗緟瀵煎嚭瀵嗛挜鐢ㄤ氦鎹㈠瘑閽ヨ繘琛屽姞瀵嗭紝鍋囧鏄叕寮鐨凚LOG褰撶劧灝辮緗負(fù)0<br />聽(tīng) DWORD dwBlobType,聽(tīng)聽(tīng) //鎸囧畾瀵煎嚭鐨勫瘑閽LOB綾誨瀷銆傚叚涓弬鏁拌MSDN<br />聽(tīng) DWORD dwFlags,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //CRYPT_DESTROYKEY錛孋RYPT_SSL2_FALLBACK錛孋RYPT_OAEP<br />聽(tīng) BYTE* pbData,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //瀵煎嚭鐨勬暟鎹寚閽堬紝浠ュ悗灝卞彲浠ュ皢榪欎釜鏁版嵁鍐欏紓佺洏鎴栬呭埆鐨勪換鍔°?br />聽(tīng) DWORD* pdwDataLen聽(tīng)聽(tīng) //瀵煎嚭鐨勬暟鎹暱搴?br />);<br />渚嬪錛欳ryptExportKey(hKey, hXchgKey, SIMPLEBLOB, 0, pbKeyBlob, &dwBlobLen)<br />2錛孋ryptImportKey灝嗗瘑閽ヤ粠BLOB杞崲鍒癈SP涓?br />BOOL WINAPI CryptImportKey(<br />聽(tīng) HCRYPTPROV hProv,聽(tīng) //CSP鍙ユ焺<br />聽(tīng) BYTE* pbData,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //寰呰漿鎹㈢殑BLOB鏁版嵁<br />聽(tīng) DWORD dwDataLen,聽(tīng)聽(tīng) //寰呰漿鎹㈢殑鏁版嵁闀垮害<br />聽(tīng) HCRYPTKEY hPubKey, //瀵笲LOB瑙e瘑鐨勫叕閽ワ紝璀涓婇潰鏄敤浜ゆ崲瀵嗛挜瀵嗛挜鍔犲瘑鐨勶紝灝辯敤浜ゆ崲瀵嗛挜瑙e瘑<br />聽(tīng) DWORD dwFlags,聽(tīng)聽(tīng)聽(tīng)聽(tīng) //鐩墠榪樺彧搴旂敤鍦ㄥ綋涓瀵瑰叕/縐侀挜浠嶱RIVATEKEYBLOB涓姞鍏SP涓繖縐嶆儏鍐點(diǎn)?br />聽(tīng) HCRYPTKEY* phKey聽(tīng)聽(tīng) //out瀵煎叆鐨勫瘑閽?br />);<br />渚嬪錛欳ryptImportKey(hProv,pbKeyBlob,dwBlobLen,0,0,&hPubKey)</font> </p> <p> <br /> <font color="#000000">聽(tīng) 浜旓細(xì)Encoding and Decoding Messages<br />聽(tīng) 緙栫爜鐨勫鐞嗚繃紼?br />聽(tīng) 1錛屽皢寰呯紪鐮佺殑鏁版嵁杞寲涓哄悎閫傜殑鏍煎紡錛屼嬌鐢?br />聽(tīng) 2錛岃皟鐢–ryptMsgOpenToEncode錛宲assing the necessary argument;<br />聽(tīng) 3, 璋冪敤CryptMsgUpdate鍑芥暟澶氭錛屾渶鍚庝竴嬈¤皟鐢ㄦ椂錛屽皢final鍙傛暟璁劇疆涓簍rue<br />聽(tīng) 4, 璋冪敤CryptMsgGetParam鏉ヨ幏鍙栦竴涓渶瑕佸緱鍒扮殑鍙傛暟銆?br />聽(tīng) 5, 璋冪敤CryptMsgClose鏉ュ叧闂秷鎭?br />聽(tīng) 瑙g爜鐨勫鐞嗚繃紼?br />聽(tīng) 1錛屾鏌ョ敵璇風(fēng)殑鏀劇紪鐮佸悗鏁版嵁鐨勭┖闂達(dá)紝鍒╃敤鍑芥暟CryptMsgCalculateEncodedLength.<br />聽(tīng) 2錛岃皟鐢ㄥ嚱鏁癈ryptMsgOpenToDecode,passing the necessary argument錛?br />聽(tīng) 3錛岃皟鐢–ryptMsgUpdate涓嬈★紝榪欏皢瀵艱嚧鍚堥傜殑鍔ㄤ綔鍘誨鐞嗕俊鎭紝浠ユ潵浜庝俊鎭殑鏍煎紡<br />聽(tīng) 4錛屼竴浜涢澶栫殑澶勭悊錛屼緥濡傞澶栫殑瑙e瘑鎴栬呮槸楠岃瘉錛岃皟鐢–ryptMsgControl,<br />聽(tīng) 5錛岃皟鐢–ryptMsgGetParam鏉ヨ幏鍙栭渶瑕佸緱鍒扮殑鍙傛暟<br />聽(tīng) 6錛岃皟鐢–ryptMsgClose鏉ュ叧闂秷鎭?br />聽(tīng) 鍏蜂綋鐨勫嚱鏁頒粙緇嶏細(xì)<br />聽(tīng) 1錛孋ryptMsgCalculateEncodedLength璁$畻鎵闇瑕佺殑瀛樺偍緙栫爜鐨勬渶澶х┖闂村?br />DWORD WINAPI CryptMsgCalculateEncodedLength(<br />聽(tīng) DWORD dwMsgEncodingType,//鎸囧畾緙栫爜綾誨瀷銆備竴鑸負(fù)X509_ASN_ENCODING|PKCS_7_ASN_ENCODING<br />聽(tīng) DWORD dwFlags,<br />聽(tīng) DWORD dwMsgType,<br />聽(tīng) const void* pvMsgEncodeInfo, //in 鎸囧悜寰呯紪鐮佺殑鏁版嵁錛屾暟鎹被鍨嬩緷璧栦簬dwMsgType<br />聽(tīng) LPSTR pszInnerContentObjID,<br />聽(tīng) DWORD cbData聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in 姣旂壒鏁扮殑瀹歸噺<br />);<br />絎簩涓弬鏁幫細(xì)CMSG_BARE_CONTENT_FLAG錛孋MSG_DETACHED_FLAG錛孋MSG_CONTENTS_OCTETS_FLAG錛孋MSG_CMS_ENCAPSULATED_CONTENT_FLAG<br />絎笁涓弬鏁幫細(xì)CMSG_DATA,CMSG_SIGNED,CMSG_ENVELOPED,CMSG_SIGNED_AND_ENVELOPED,CMSG_HASHED,CMSG_ENCRYPTED<br />絎簲涓弬鏁幫細(xì)szOID_RSA_data,szOID_RSA_signedData,szOID_RSA_envelopedData,szOID_RSA_signEnvData,szOID_RSA,digestedData ,<br />szOID_RSA_encryptedData,SPC_INDIRECT_DATA_OBJID,NULL<br />榪斿洖鍊鹼細(xì)榪斿洖闇瑕佺殑涓涓姞瀵嗕俊鎭墍闇瑕佺殑闀垮害<br />聽(tīng) 2錛孋ryptMsgOpenToEncode鎵撳紑涓涓秷鎭互渚胯繘琛岀紪鐮侊紝榪斿洖鎵撳紑娑堟伅鐨勫彞鏌?br />聽(tīng) HCRYPTMSG WINAPI CryptMsgOpenToEncode(<br />聽(tīng) DWORD dwMsgEncodingType,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //鎸囧畾緙栫爜綾誨瀷銆備竴鑸負(fù)X509_ASN_ENCODING|PKCS_7_ASN_ENCODING<br />聽(tīng) DWORD dwFlags,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) <br />聽(tīng) DWORD dwMsgType,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) <br />聽(tīng) const void* pvMsgEncodeInfo,<br />聽(tīng) LPSTR pszInnerContentObjID,聽(tīng)聽(tīng)聽(tīng) //鍜孋ryptMsgCalculateEncodedLength涓鏍?br />聽(tīng) PCMSG_STREAM_INFO pStreamInfo //褰撴祦娌¤浣跨敤鏃訛紝璇ュ弬鏁頒負(fù)NULL<br />);<br />絎簩涓弬鏁幫細(xì)CMSG_BARE_CONTENT_FLAG,CMSG_DETACHED_FLAG,CMSG_CONTENTS_OCTETS_FLAG,CMSG_CMS_ENCAPSULATED_CONTENT_FLAG,<br />CMSG_CRYPT_RELEASE_CONTEXT_FLAG<br />絎笁涓弬鏁幫細(xì)<br />CMSG_DATA(Not used),CMSG_SIGNED,CMSG_SIGNED_ENCODE_INFO,CMSG_ENVELOPED,CMSG_ENVELOPED_ENCODE_INFO <br />CMSG_SIGNED_AND_ENVELOPED(Not currently implemented),CMSG_HASHED <br />聽(tīng) 3錛孋ryptMsgOpenToDecode鎵撳紑涓涓秷鎭互渚胯繘琛岃В鐮侊紝榪斿洖鎵撳紑娑堟伅鐨勫彞鏌?br />聽(tīng) CRYPTMSG WINAPI CryptMsgOpenToDecode(<br />聽(tīng) DWORD dwMsgEncodingType,聽(tīng)聽(tīng)聽(tīng)聽(tīng) //鎸囧畾緙栫爜綾誨瀷銆備竴鑸負(fù)X509_ASN_ENCODING|PKCS_7_ASN_ENCODING<br />聽(tīng) DWORD dwFlags,聽(tīng)聽(tīng) //CMSG_DETACHED_FLAG錛孋MSG_CRYPT_RELEASE_CONTEXT_FLAG<br />聽(tīng) DWORD dwMsgType, //CMSG_DATA,CMSG_ENVELOPED,CMSG_HASHED,CMSG_SIGNED,CMSG_SIGNED_AND_ENVELOPED<br />聽(tīng) HCRYPTPROV hCryptProv,聽(tīng)聽(tīng)聽(tīng) //鎸囧畾浣跨敤HASHING鐨勫彞鏌勶紝涓鑸緗負(fù)0<br />聽(tīng) PCERT_INFO pRecipientInfo,//淇濈暀瀛楋紝蹇呴』涓篘ULL<br />聽(tīng) PCMSG_STREAM_INFO pStreamInfo//鍋囧嫻佹病琚嬌鐢紝蹇呴』涓篘ULL<br />);<br />聽(tīng) 4錛孋ryptMsgUpdate澧炲姞鍐呭鍒板姞瀵嗕俊鎭腑<br />BOOL WINAPI CryptMsgUpdate(<br />聽(tīng) HCRYPTMSG hCryptMsg, //寰呮洿鏂扮殑鍔犲瘑淇℃伅鍙ユ焺<br />聽(tīng) const BYTE* pbData,聽(tīng) //寰呯紪鐮?瑙g爜鐨勬暟鎹?br />聽(tīng) DWORD cbData,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // pbData 鐨勬暟鎹暱搴?br />聽(tīng) BOOL fFinal聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) <br />);<br />絎洓涓弬鏁幫細(xì)褰揅MSG_DETACHED_FLAG娌℃湁璁劇疆錛屽茍涓斾俊鎭敱CryptMsgOpenToDecode鎴朇ryptMsgOpenToEncode鎵撳紑錛岄偅涔坒Final琚緗負(fù)TRUE錛屽茍涓擟ryptMsgUpdate鍙璋冪敤涓嬈°傚綋CMSG_DETACHED_FLAG琚緗紝騫朵笖淇℃伅鐢?CryptMsgOpenToEncode鎵撳紑錛岄偅涔堜粎鍦ㄦ渶鍚庝竴嬈¤皟鐢–ryptMsgUpdate鎵嶈璁劇疆涓篢RUE銆傚綋CMSG_DETACHED_FLAG琚緗紝騫朵笖淇℃伅鐢盋ryptMsgOpenToDecode鎵撳紑錛岄偅涔堜粎鍦ㄤ俊鎭ご鍗曠嫭琚鐞嗘椂CryptMsgUpdate鎵嶈璁劇疆涓篢RUE銆?br />聽(tīng) 5錛孋ryptMsgGetParam鍦ㄦ暟鎹紪鐮?瑙g爜鍚庤幏鍙栧弬鏁?br />聽(tīng) BOOL WINAPI CryptMsgGetParam(<br />聽(tīng) HCRYPTMSG hCryptMsg,聽(tīng) //in 淇℃伅鍙ユ焺<br />聽(tīng) DWORD dwParamType,聽(tīng)聽(tīng) //in 鍙傛暟浼楀錛屽弬瑙丮SDN<br />聽(tīng) DWORD dwIndex,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in 鍙傜敤鐨勮繑鍥炲弬鏁板彞鏌?鍋囧鍙傛暟娌℃湁琚幏鍙栵紝鍒欒蹇界暐鎴栧垯涓?<br />聽(tīng) void* pvData,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //out 鑾峰彇鐨勬暟鎹寚閽?br />聽(tīng) DWORD* pcbData聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //in,out鏁版嵁闀垮害<br />);<br />聽(tīng)聽(tīng) 6錛孋ryptMsgClose鍏抽棴淇℃伅鍙ユ焺<br />BOOL WINAPI CryptMsgClose(<br />聽(tīng) HCRYPTMSG hCryptMsg<br />);<br />鍏蜂綋鐨勪緥瀛愶細(xì)<br />cbEncodedBlob = CryptMsgCalculateEncodedLength(<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) MY_ENCODING_TYPE,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Message encoding type<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 0,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Flags<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) CMSG_DATA,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Message type<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) NULL,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Pointer to structure<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) NULL,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Inner content object ID<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) cbContent))聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Size of content<br />hMsg = CryptMsgOpenToEncode(<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) MY_ENCODING_TYPE,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Encoding type<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 0,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Flags<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) CMSG_DATA,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Message type<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) NULL,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Pointer to structure<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) NULL,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Inner content object ID<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) NULL))聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Stream information (not used)<br />CryptMsgUpdate(<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) hMsg,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Handle to the message<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) pbContent,聽(tīng)聽(tīng)聽(tīng) // Pointer to the content<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) cbContent,聽(tīng)聽(tīng)聽(tīng) // Size of the content<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) TRUE))聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Last call<br />{<br />CryptMsgGetParam(<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) hMsg,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Handle to the message<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) CMSG_BARE_CONTENT_PARAM,聽(tīng)聽(tīng) // Parameter type<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 0,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Index<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) pbEncodedBlob,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Pointer to the BLOB<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) &cbEncodedBlob))聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Size of the BLOB<br />CryptMsgClose(hMsg);<br />hMsg = CryptMsgOpenToDecode(<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) MY_ENCODING_TYPE,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Encoding type.<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 0,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Flags.<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) CMSG_DATA,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Look for a data message.<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) NULL,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Cryptographic provider.<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) NULL,聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Recipient information.<br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) NULL))聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Stream information.</font> </p><img src ="http://www.tkk7.com/security/aggbug/56869.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/security/" target="_blank">david.turing</a> 2006-07-05 23:18 <a href="http://www.tkk7.com/security/articles/56869.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://51a88.com" target="_blank">亚洲日韩aⅴ在线视频</a>| <a href="http://szzrjk.com" target="_blank">亚洲最大中文字幕</a>| <a href="http://tv787.com" target="_blank">亚洲AV无码男人的天堂</a>| <a href="http://www611rr.com" target="_blank">无限动漫网在线观看免费</a>| <a href="http://828556.com" target="_blank">亚洲va乱码一区二区三区</a>| <a href="http://csl-chinga.com" target="_blank">青青青国产在线观看免费</a>| <a href="http://2222jjjj.com" target="_blank">亚洲专区一路线二</a>| <a href="http://liulaogendawutai.com" target="_blank">2020久久精品国产免费</a>| <a href="http://2828228.com" target="_blank">中文日韩亚洲欧美制服</a>| <a href="http://zzxngk.com" target="_blank">日韩免费高清一级毛片在线</a>| <a href="http://vod8090.com" target="_blank">亚洲日韩在线中文字幕综合 </a>| <a href="http://wuaiav.com" target="_blank">91在线手机精品免费观看</a>| <a href="http://7a37.com" target="_blank">亚洲乱亚洲乱淫久久</a>| <a href="http://gztzbj.com" target="_blank">最近中文字幕国语免费完整</a>| <a href="http://www-bajie.com" target="_blank">亚洲视频中文字幕在线</a>| <a href="http://hbjpxnyqckj.com" target="_blank">日本免费xxxx</a>| <a href="http://by6174.com" target="_blank">亚洲а∨精品天堂在线</a>| <a href="http://9xav.com" target="_blank">亚洲免费视频一区二区三区</a>| <a href="http://www84847.com" target="_blank">中文字幕在线视频免费观看</a>| <a href="http://51wdn.com" target="_blank">精品亚洲A∨无码一区二区三区</a>| <a href="http://wwwse09.com" target="_blank">真人做人试看60分钟免费视频 </a>| <a href="http://www9797nn.com" target="_blank">久久亚洲AV无码精品色午夜麻豆</a>| <a href="http://hongyue8.com" target="_blank">中文字幕免费视频</a>| <a href="http://96j6.com" target="_blank">亚洲午夜精品久久久久久app</a>| <a href="http://adcaes.com" target="_blank">啦啦啦手机完整免费高清观看</a>| <a href="http://zxzzzzx.com" target="_blank">国产成人亚洲精品播放器下载 </a>| <a href="http://34pmpm.com" target="_blank">日本免费一区二区三区最新vr</a>| <a href="http://286513.com" target="_blank">日本一区二区三区免费高清在线</a>| <a href="http://tuopumao.com" target="_blank">国产亚洲精品看片在线观看</a>| <a href="http://cqyouyongpx.com" target="_blank">亚在线观看免费视频入口</a>| <a href="http://ylptt.com" target="_blank">国产精品亚洲自在线播放页码</a>| <a href="http://www2019rz.com" target="_blank">国产一区二区三区免费视频</a>| <a href="http://wwwp784.com" target="_blank">两个人看的www高清免费视频</a>| <a href="http://bying100.com" target="_blank">亚洲国产精品人久久电影</a>| <a href="http://326h.com" target="_blank">国产在线播放免费</a>| <a href="http://yy6090qpgdy.com" target="_blank">国产成人免费AV在线播放</a>| <a href="http://ymiwang.com" target="_blank">www.亚洲日本</a>| <a href="http://lyczyb.com" target="_blank">亚洲国产一二三精品无码</a>| <a href="http://57az.com" target="_blank">在线看片免费不卡人成视频</a>| <a href="http://aqddv.com" target="_blank">中文字幕无码免费久久9一区9</a>| <a href="http://kk600700.com" target="_blank">亚洲免费人成视频观看</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>