锘??xml version="1.0" encoding="utf-8" standalone="yes"?>午夜精品久久久久久99热软件,韩日一区二区三区,精品一区二区avhttp://www.aygfsteel.com/security/category/11353.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 10:19:27 GMTTue, 27 Feb 2007 10:19:27 GMT60閲嶆柊瀹炵幇JCAPI鐨凧CE Providerhttp://www.aygfsteel.com/security/archive/2006/07/18/JCE_Provider_For_crytpoAPI.htmldavid.turingdavid.turingTue, 18 Jul 2006 04:06:00 GMThttp://www.aygfsteel.com/security/archive/2006/07/18/JCE_Provider_For_crytpoAPI.htmlhttp://www.aygfsteel.com/security/comments/58720.htmlhttp://www.aygfsteel.com/security/archive/2006/07/18/JCE_Provider_For_crytpoAPI.html#Feedback4http://www.aygfsteel.com/security/comments/commentRss/58720.htmlhttp://www.aygfsteel.com/security/services/trackbacks/58720.htmlhttp://pheox.com/download) 鎻愪緵涓涓狫CE Provider鍙互鐩存帴鎿嶄綔Microsoft 鎿嶄綔緋葷粺鏈湴璇佷功搴?縐侀挜鐨勩侸CAPI鐢ㄤ竴涓猨capi.dll灝佽浜嗚繖浜涘鏉傛э紝榪欎釜dll璐熻矗璋冪敤Windows鍐呯疆鐨凜SP鏉ュ畬鎴愬姞瀵嗙鍚嶅搱甯岀瓑瀵嗙爜榪愮畻銆?br />JCAPI.DLL灞炰簬杞婚噺綰х殑涓棿灞傜被搴擄紝瀹冭Java寮鍙戣呭厤鍘誨寰匔SP鐨勭粏鑺傦紝姣斿鑾峰緱涓涓狢SP鐨凥andle銆?br />JCAPI.dll鎻愪緵浜嗕笅闈㈢殑JNI璋冪敤錛?br />
00000001聽聽聽聽10002AA0聽聽聽聽_Java_com_pheox_jcapi_CoreCipherJNI_decrypt@24
00000002聽聽聽聽100021A0聽聽聽聽_Java_com_pheox_jcapi_CoreCipherJNI_encrypt@20
00000003聽聽聽聽100027A0聽聽聽聽_Java_com_pheox_jcapi_CoreCipherJNI_encryptWithPrivateKey@20
00000004聽聽聽聽10001E10聽聽聽聽_Java_com_pheox_jcapi_CoreCipherJNI_getPrivateKeySize@12
00000005聽聽聽聽10003610聽聽聽聽_Java_com_pheox_jcapi_CoreKeyStoreJNI_aliases@16
00000006聽聽聽聽100039D0聽聽聽聽_Java_com_pheox_jcapi_CoreKeyStoreJNI_containsAlias@12
00000007聽聽聽聽10005E50聽聽聽聽_Java_com_pheox_jcapi_CoreKeyStoreJNI_createBase64Hash@12
00000008聽聽聽聽10003B30聽聽聽聽_Java_com_pheox_jcapi_CoreKeyStoreJNI_deleteEntry@12
00000009聽聽聽聽10003DA0聽聽聽聽_Java_com_pheox_jcapi_CoreKeyStoreJNI_getCertificate@12
0000000A聽聽聽聽10003FE0聽聽聽聽_Java_com_pheox_jcapi_CoreKeyStoreJNI_getCertificateChain@
20
0000000B聽聽聽聽
10004530聽聽聽聽_Java_com_pheox_jcapi_CoreKeyStoreJNI_getKey@12
0000000C聽聽聽聽10004C00聽聽聽聽_Java_com_pheox_jcapi_CoreKeyStoreJNI_isKeyEntry@
12
0000000D聽聽聽聽10004E00聽聽聽聽_Java_com_pheox_jcapi_CoreKeyStoreJNI_setCertificateEntry@
16
0000000E聽聽聽聽
10005020聽聽聽聽_Java_com_pheox_jcapi_CoreKeyStoreJNI_setKeyEntry@44
0000000F聽聽聽聽10005CA0聽聽聽聽_Java_com_pheox_jcapi_CoreKeyStoreJNI_size@
16
00000010聽聽聽聽100062A0聽聽聽聽_Java_com_pheox_jcapi_CoreSignatureJNI_hashFinal@12
00000011聽聽聽聽10005F80聽聽聽聽_Java_com_pheox_jcapi_CoreSignatureJNI_hashInit@12
00000012聽聽聽聽10006140聽聽聽聽_Java_com_pheox_jcapi_CoreSignatureJNI_hashUpdate@16
00000013聽聽聽聽10006430聽聽聽聽_Java_com_pheox_jcapi_CoreSignatureJNI_sign@28
00000014聽聽聽聽10006F60聽聽聽聽_Java_com_pheox_jcapi_CoreSignatureJNI_verify@28
00000015聽聽聽聽10007CF0聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_addPKCS11CSP@16
00000016聽聽聽聽10007880聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_createCertEntryStore@8
00000017聽聽聽聽10007C20聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_getAddedPKCS11CSPs@8
00000018聽聽聽聽100078E0聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_getCSP@12
00000019聽聽聽聽10008F10聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_getCertStoreFriendlyName@12
0000001A聽聽聽聽100089C0聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_getCertificateFriendlyName@
12
0000001B聽聽聽聽
10007500聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_getJCAPIDLLVersion@8
0000001C聽聽聽聽
10007520聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_getMSCSPs@8
0000001D聽聽聽聽
10009010聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_getMSCertStoreNames@8
0000001E聽聽聽聽10007E20聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_getPKCS11DLLName@
12
0000001F聽聽聽聽100083F0聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_getPKCS11TokenInfo@
12
00000020聽聽聽聽10007B50聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_getSupportedPKCS11CSPs@8
00000021聽聽聽聽100077A0聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_init@12
00000022聽聽聽聽10007F40聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_isPKCS11PrivateKey@12
00000023聽聽聽聽10007D90聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_removePKCS11CSP@12
00000024聽聽聽聽10008F90聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_reportMemStatus@8
00000025聽聽聽聽10008360聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_setCallbackPinCode@12
00000026聽聽聽聽100083B0聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_setCertOpenStoreFlags@12
00000027聽聽聽聽10008C80聽聽聽聽_Java_com_pheox_jcapi_CoreUtilJNI_setCertificateFriendlyName@16
瀹冭皟鐢ㄧ殑綾誨簱鍏跺疄榪樻槸crypt32.dll鍜孉DVAPI32.dll.
crypt32.dll:
0000002C聽聽聽聽CertEnumSystemStore
00000041聽聽聽聽CertGetCertificateContextProperty
0000008B聽聽聽聽CryptFindLocalizedName
00000056聽聽聽聽CertRegisterSystemStore
00000097聽聽聽聽CryptHashCertificate
00000061聽聽聽聽CertSetCertificateContextProperty
00000019聽聽聽聽CertCreateCertificateContext
00000004聽聽聽聽CertAddCertificateContextToStore
00000044聽聽聽聽CertGetIssuerCertificateFromStore
0000001E聽聽聽聽CertDeleteCertificateFromStore
00000029聽聽聽聽CertEnumCertificatesInStore
0000007C聽聽聽聽CryptDecodeObject
0000009C聽聽聽聽CryptImportPublicKeyInfo
00000050聽聽聽聽CertOpenStore
00000032聽聽聽聽CertFindCertificateInStore
0000000F聽聽聽聽CertCloseStore
0000003C聽聽聽聽CertFreeCertificateContext

瀵煎叆,聽ADVAPI32.dll
欏哄簭聽(紺烘剰)聽聽聽聽鍚嶅瓧
000000A8聽聽聽聽CryptSignHashA
00000099聽聽聽聽CryptGetHashParam
0000008B聽聽聽聽CryptDestroyHash
0000009D聽聽聽聽CryptHashData
00000088聽聽聽聽CryptCreateHash
00000094聽聽聽聽CryptExportKey
00000089聽聽聽聽CryptDecrypt
0000009F聽聽聽聽CryptImportKey
0000008F聽聽聽聽CryptEncrypt
0000009C聽聽聽聽CryptGetUserKey
0000009A聽聽聽聽CryptGetKeyParam
0000008C聽聽聽聽CryptDestroyKey
00000085聽聽聽聽CryptAcquireContextA
000000A0聽聽聽聽CryptReleaseContext
000000AA聽聽聽聽CryptVerifySignatureA
00000092聽聽聽聽CryptEnumProvidersA
000001C9聽聽聽聽RegCloseKey
000001EC聽聽聽聽RegQueryValueExA
000001F9聽聽聽聽RegSetValueExA
000001CD聽聽聽聽RegCreateKeyExA
000001E2聽聽聽聽RegOpenKeyExA
000000A1聽聽聽聽CryptSetHashParam

鍦ㄦ爣鍑嗙殑CryptoAPI鍑芥暟涓婄殑灝佽鏄湁蹇呰鐨勶紝鍥犱負浠嶫ava紼嬪簭鍛樼殑瑙掑害錛屾垜浠笉闇瑕佸お鍏沖績CSP錛屾垜浠笇鏈涚洿鎺ヨ繘琛孋ryptography榪愮畻銆?br />
JCAPI榪欎釜provider鎻愪緵3涓猄PI鐨勫疄鐜幫紝
  • java.security.KeyStoreSpi
  • java.security.SignatureSpi
  • javax.crypto.CipherSpi

    涔熷氨鏄紝鎴戜滑閫氳繃Java搴旂敤紼嬪簭鍙互鐩存帴鍊熷姪浜嶫CE API鏉ヨ皟鐢–ryptoAPI銆?

    榪欎釜JCE API綆楁硶鏀寔涓嬮潰鐨勫熀鏈搷浣?/p>

    • Add, remove, list and access X.509 certificates.
    • Add, remove, access and export RSA private keys.
    • Create signatures with RSA private keys using the following algorithms:
      • SHA1withRSA
      • MD5withRSA
      • MD2withRSA
    • Verify signatures with RSA public keys.
    • Encrypt/decrypt data with RSA public/private keys using the following algorithm, mode and padding:
      • RSA/ECB/PKCS1Padding
    • Wrap and unwrap symmetric- and asymmetric keys with RSA key pairs through MS CAPI and PKCS#11.
    • Built-in support for tested PKCS#11 CSP manufacturers that is compliant with the functions required by JCAPI.
    • Dynamically adding/removing of PKCS#11 CSPs into JCAPI.
    • Private key call-back interface for PKCS#11 providers. You can provide your own preferred Java call-back implementation to be called whenever a private key is accessed through PKCS#11.
    • List and configure MS CAPI system (certificate) stores.
    • Use a MS CAPI system (certificate) store as an un-trusted store.
    • Set and get MS CAPI friendly names for certificates.
    • Get MS CAPI friendly names for system (certificate) stores.
    • Get detailed information about your PKCS#11 hardware token through the JCAPI PKCS#11 information class.
    • Use JCAPI supported plug-ins. A JCAPI plug-in is a signed JAR file that extends or enhances the functionality of JCAPI without the need of recompiling JCAPI.
    • JCAPI SSL plugin. Use this plug-in to simplify the work of integrating the JCAPI key store for SSL enabled applications. The plug-in transparently supports both the old JSSE version for Java 1.3, and the newer versions included in Java 1.4 and higher. This plug-in transparently supports the PKCS#11 implementation as defined in Java 5. Your JCAPI supported hardware keys can be plugged in and used immediately for SSL. JCAPI will automatically configure the token for you by setting the correct slot identity to use etc.
    • JCAPI X.509 Factory plug-in. Use this plug-in to transparently replace any other X.509 certificate factories used by your Java system.
    • JCAPI is signed with a qualified code signing certificate that is trusted by all modern web browsers which makes it suitable in trusted applets.

    JCE API鏀寔涓涓嬬殑緋葷粺錛屾垜鍙槸鍦╓indows2000涓婃祴璇曢氳繃錛屽叾浠栧鉤鍙版垜涓嶈兘淇濊瘉鐮磋В鑳芥甯鎬嬌鐢ㄣ?

    • Windows 98
    • Windows 98 SE
    • Windows ME
    • Windows 2000
    • Windows XP

    JCE 鏀寔JDK1.4浠ヤ笂錛孞DK1.3紼嶅井涓洪夯鐑︼紝瑕佽嚜宸遍厤鍒禞CE鍜孞SSE

    • Java 1.3.1 with JCE 1.2.2 and JSSE 1.0.3
    • Java 1.4
    • Java 1.5

    鎴戝凡緇忓湪鍚夊ぇ姝e厓鐨別Safe閽ュ寵涓婇氳繃嫻嬭瘯錛屽叾浠栭挜鍖欐彁渚涘晢鍙互鍙戦偖浠剁粰鎴戯紝鎴栬呯粰Usb閽ュ寵鎴戝幓嫻嬭瘯銆?br />
    JCAPI鐨勬椂闂撮檺鍒舵瘮杈冨鏄撳幓闄わ紝浣嗙敱浜嶫NI灞備互涓婄殑浠g爜鍋氫簡澶ч噺娣鋒穯錛屾垜涓嶅緱涓嶉噸鍐欒繖涓狫CE Provider錛屾渶璧風爜瑕佸疄鐜?font face="Courier New">KeyStoreSpi錛孲ignatureSpi鍜孋ipherSpi銆?/font>

  • JCAPI鐨凧CE Provider鎴戝皢浼氬湪涓嬩釜鏈堟彁渚?/p>



  • david.turing 2006-07-18 12:06 鍙戣〃璇勮
    ]]>
    How to use Java produce Signature by USBKey under CryptoAPI/CSPhttp://www.aygfsteel.com/security/archive/2006/07/11/java_cryptoapi_csp_signature.htmldavid.turingdavid.turingTue, 11 Jul 2006 05:24:00 GMThttp://www.aygfsteel.com/security/archive/2006/07/11/java_cryptoapi_csp_signature.htmlhttp://www.aygfsteel.com/security/comments/57638.htmlhttp://www.aygfsteel.com/security/archive/2006/07/11/java_cryptoapi_csp_signature.html#Feedback0http://www.aygfsteel.com/security/comments/commentRss/57638.htmlhttp://www.aygfsteel.com/security/services/trackbacks/57638.html闃呰鍏ㄦ枃

    david.turing 2006-07-11 13:24 鍙戣〃璇勮
    ]]>
    Hacking getcsp of pheoxhttp://www.aygfsteel.com/security/archive/2006/07/04/56609.htmldavid.turingdavid.turingTue, 04 Jul 2006 14:52:00 GMThttp://www.aygfsteel.com/security/archive/2006/07/04/56609.htmlhttp://www.aygfsteel.com/security/comments/56609.htmlhttp://www.aygfsteel.com/security/archive/2006/07/04/56609.html#Feedback0http://www.aygfsteel.com/security/comments/commentRss/56609.htmlhttp://www.aygfsteel.com/security/services/trackbacks/56609.htmlpackage com.pheox.jcapi.test;

    import com.pheox.jcapi.CoreSignatureJNI;
    import com.pheox.jcapi.CoreUtilJNI;
    import com.pheox.jcapi.JCAPIJNIException;

    public class getcsp {

    聽聽聽 public static void main(String[] args) {
    聽聽聽 聽
    //聽聽聽聽聽聽聽 String g = "MIIDrTCCA2ugAwIBAgICAeYwCwYHKoZIzjgEAwUAMIGQMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEjAQBgNVBAcTCVBhbG8gQWx0bzEdMBsGA1UEChMUU3VuIE1pY3Jvc3lzdGVtcyBJbmMxIzAhBgNVBAsTGkphdmEgU29mdHdhcmUgQ29kZSBTaWduaW5nMRwwGgYDVQQDExNKQ0UgQ29kZSBTaWduaW5nIENBMB4XDTA1MDEyMTIyNDc1MloXDTEwMDEyNTIyNDc1MlowVDEdMBsGA1UEChMUU3VuIE1pY3Jvc3lzdGVtcyBJbmMxIzAhBgNVBAsTGkphdmEgU29mdHdhcmUgQ29kZSBTaWduaW5nMQ4wDAYDVQQDEwVQaGVveDCCAbgwggEsBgcqhkjOOAQBMIIBHwKBgQD9f1OBHXUSKVLfSpwu7OTn9hG3UjzvRADDHj+AtlEmaUVdQCJR+1k9jVj6v8X1ujD2y5tVbNeBO4AdNG/yZmC3a5lQpaSfn+gEexAiwk+7qdf+t8Yb+DtX58aophUPBPuD9tPFHsMCNVQTWhaRMvZ1864rYdcq7/IiAxmd0UgBxwIVAJdgUI8VIwvMspK5gqLrhAvwWBz1AoGBAPfhoIXWmz3ey7yrXDa4V7l5lK+7+jrqgvlXTAs9B4JnUVlXjrrUWU/mcQcQgYC0SRZxI+hMKBYTt88JMozIpuE8FnqLVHyNKOCjrh4rs6Z1kW6jfwv6ITVi8ftiegEkO8yk8b6oUZCJqIPf4VrlnwaSi2ZegHtVJWQBTDv+z0kqA4GFAAKBgQD2cHtWHnwO9pOZx9H0uUoLZGKE3iwvVAkUwzVqVEgT4fMG70icn2dII/RABPtXW6Zai87iIg7zC975qeeEznBee7ll/8HFFe8H4IL3tPCf+/TigELMORl3ySd8lzD1mEZMYUL6Rc16T3ZJ3iUxfrJJiN815SZ8qrDkHAtS1Hhot6OBjTCBijARBglghkgBhvhCAQEEBAMCBBAwDgYDVR0PAQH/BAQDAgXgMB0GA1UdDgQWBBRkqtvyzwWOJd+aZikkKKFLDTaqbDAfBgNVHSMEGDAWgBRl4vSGydNO8JFOWKJq9dh4WprBpjAlBgNVHREEHjAcgRp0b21teS5ncmFuZGVmb3JzQHBoZW94LmNvbTALBgcqhkjOOAQDBQADLwAwLAIUdTerIDsy5CLjjPffwoO4rYWZ4kECFAyrKdfe2Qj5T5MWse9EhMD951Wt";

    聽聽try {
    聽聽聽System.loadLibrary("JCAPI");
    聽聽聽System.out.println("Load Library Successfully!");
    聽聽} catch(UnsatisfiedLinkError e)聽{

    聽聽聽e.printStackTrace();
    聽聽}
    聽聽CoreUtilJNI core=new CoreUtilJNI();
    聽聽
    聽聽String[] mscsp=core.getMSCSP();
    聽聽
    聽聽for(int i=0;i<mscsp.length;i++)
    聽聽聽System.out.println(mscsp[i]);
    聽聽System.out.println("done");
    聽聽
    聽聽
    聽聽String content="1234567890abcdefghij+sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss";
    聽聽
    聽聽byte[] data = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
    聽聽
    聽聽data=content.getBytes();
    聽聽
    聽聽try
    聽聽聽聽聽聽聽 {
    聽聽聽聽聽聽聽聽聽聽聽 int[] d= CoreSignatureJNI.hashInit("SHA1");
    聽聽聽聽聽聽聽聽聽聽聽 CoreSignatureJNI.hashUpdate(d, data);
    聽聽聽聽聽聽聽聽聽聽聽 byte abyte1[] = CoreSignatureJNI.hashFinal(d);
    聽聽聽聽聽聽聽聽聽聽聽
    聽聽聽聽聽聽聽聽聽聽聽 System.out.println(""+new String(abyte1));
    聽聽聽聽聽聽聽聽聽聽聽 return;
    聽聽聽聽聽聽聽 }
    聽聽聽聽聽聽聽 catch(JCAPIJNIException jcapijniexception)
    聽聽聽聽聽聽聽 {
    聽聽聽聽聽聽聽 聽jcapijniexception.printStackTrace();
    聽聽聽聽聽聽聽 }
    聽聽
    聽聽
    聽聽
    聽聽
    聽聽
    聽}

    }



    david.turing 2006-07-04 22:52 鍙戣〃璇勮
    ]]>
    Java KeyStore鐨勭被鍨?/title><link>http://www.aygfsteel.com/security/archive/2006/05/22/Java_KeyStore_Type.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Sun, 21 May 2006 17:57:00 GMT</pubDate><guid>http://www.aygfsteel.com/security/archive/2006/05/22/Java_KeyStore_Type.html</guid><wfw:comment>http://www.aygfsteel.com/security/comments/47396.html</wfw:comment><comments>http://www.aygfsteel.com/security/archive/2006/05/22/Java_KeyStore_Type.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/security/comments/commentRss/47396.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/security/services/trackbacks/47396.html</trackback:ping><description><![CDATA[     鎽樿: 鎬葷粨鍚勭Java KeyStoreType  <a href='http://www.aygfsteel.com/security/archive/2006/05/22/Java_KeyStore_Type.html'>闃呰鍏ㄦ枃</a><img src ="http://www.aygfsteel.com/security/aggbug/47396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/security/" target="_blank">david.turing</a> 2006-05-22 01:57 <a href="http://www.aygfsteel.com/security/archive/2006/05/22/Java_KeyStore_Type.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>璁$畻HMAChttp://www.aygfsteel.com/security/archive/2006/05/21/java_hmac_sample.htmldavid.turingdavid.turingSun, 21 May 2006 09:05:00 GMThttp://www.aygfsteel.com/security/archive/2006/05/21/java_hmac_sample.htmlhttp://www.aygfsteel.com/security/comments/47303.htmlhttp://www.aygfsteel.com/security/archive/2006/05/21/java_hmac_sample.html#Feedback1http://www.aygfsteel.com/security/comments/commentRss/47303.htmlhttp://www.aygfsteel.com/security/services/trackbacks/47303.html Message Authentication Code (MAC) 鏄敤浜庣‘淇′俊鎭湪浼犺緭榪囩▼涓病鏈夎淇敼榪囷紝浣撶幇浜嗕俊鎭畬鏁存э紝 MAC 鏈夊緢澶氱綆楁硶錛屽ぇ閮ㄥ垎綆楁硶鐢ㄤ簬綆鍗曠殑鍦烘櫙錛堝鏂囦歡浼犺緭錛夛紝浠栦滑閮芥湁鏁堬紝浣嗗鏋滅敤浜庨兘鏈浘鑰冭檻浼氳鎭舵剰鏀誨嚮鐨勬儏鍐碉紝鍦ㄥ瘑鐮佸棰嗗煙涓紝鏇村琚簲鐢ㄧ殑鏄?/span> HMAC 錛?/span> HMAC 鏇村畨鍏紝鍥犱負瀹冩槸鍩轟簬 Key 鐨勩?/span> HMAC 鏄嬌鐢ㄨ濡?/span> MD5,SHA-1 絳夋暎鍒楃畻娉曟瀯閫?/span> MAC 銆?/span>

    HMAC 鍦ㄨ繖鏍蜂竴縐嶅満鏅腑琚簲鐢細

    宸磋但灝斻佺﹩緗曢粯寰鋒槸涓轟紛鎷夊厠涓存椂鏀垮簻涓笉鍚岀殑浼婃柉鍏版淳緋伙紝鐢變簬緹庡浗宸茬粡鍦ㄤ紛鎷夊厠璁劇疆浜嗗ぇ閲忔儏鎶ユ満鏋勶紝浠栦滑鎷呭績鏀垮簻閮ㄥ唴閮ㄦ枃浠跺湪緗戠粶浼犺緭鍙兘琚編鍥芥儏鎶ュ眬淇敼錛岃冭檻璧瘋錛屽反璧皵銆佺﹩緗曢粯寰峰喅瀹氫嬌鐢?/span> MAC 鎶鏈細

    1錛?span style="FONT: 7pt 'Times New Roman'">聽 浠栦滑鍟嗘Ψ涓涓畝鍗曠殑瀵嗛挜 Key1

    2錛?span style="FONT: 7pt 'Times New Roman'">聽 浠栦滑鍟嗘Ψ涓縐嶅彲闈犵殑 HMAC 綆楁硶錛屽 HMACSHA1

    3錛?span style="FONT: 7pt 'Times New Roman'">聽 浠栦滑姣忔鍙戦佹斂搴滃鎵規姤鍛婂墠錛岄兘鐢?/span> HMACSHA1 榪涜璁$畻錛屽茍灝嗚 hmac 鍊?/span> x1 闄勫甫鍙戦佺粰瀵規柟

    4錛?span style="FONT: 7pt 'Times New Roman'">聽 瀵規柟鎺ユ敹鍒版枃浠訛紝灝嗘枃浠惰繘琛屼竴嬈?/span> HMAC 鐨勮綆楋紝寰楀嚭鏂扮殑 hmac 鍊?/span> x2 錛屽姣?/span> x1 鍜?/span> x2 錛屽彲浠ョ煡閬撴枃浠舵槸鍚﹀湪涓旇淇敼榪囥?/span>

    娉ㄦ剰錛屼笂榪扮殑姝ラ濡傛灉涓嶈冭檻鎭舵剰鏀誨嚮鑰咃紝鍙互浣跨敤娑堟伅鎽樿錛屾伓鎰忔敾鍑昏呭彲浠ヤ慨鏀逛綘鐨勬枃浠訛紝鐒跺悗閲嶆柊甯綘璁$畻鎽樿錛屾渶鍚庢浛鎹綘鐨勬憳瑕侊細錛?/span>

    聽聽聽聽聽聽 鍏充簬 HMAC 鐨勬洿澶氭爣鍑嗭紝鍙互鍙傝?/span> RFC2104 銆?/span>

    package 聽org.dev2dev.security.test.mac;

    import 聽java.io.File;
    import 聽java.io.IOException;
    import 聽java.security.InvalidKeyException;
    import 聽java.security.NoSuchAlgorithmException;

    import 聽javax.crypto.KeyGenerator;
    import 聽javax.crypto.Mac;
    import 聽javax.crypto.SecretKey;

    import 聽org.dev2dev.common.FileUtils;

    public class 聽TestHmac {

    /**
    聽聽*聽
    @param 聽args
    聽聽
    */

    public static void 聽main(String[]聽args)聽 {
    聽聽聽聽聽
    try {
    聽聽聽聽聽聽聽聽聽
    // 棣栧厛闇瑕佺敓鎴怘mac鐨刱ey錛屾湁姣旇緝澶氱鏂規硶錛孒macSHA1錛岀畻娉曠被鍨嬪彲浠ュ弬鑰?a class="" title="KeyGenerator綆楁硶鍒楄〃" href="/openssl/articles/SUNJCE_agorithm.html" target="_blank">KeyGenerator綆楁硶鍒楄〃
    聽聽聽聽聽聽聽聽聽聽聽聽聽聽// 鏈緥瀛愮敤KeyGenerator鐢熸垚key錛屽疄闄呬笂,key鍙互淇濆瓨璧鋒潵錛屼篃鍙互琚垎鍙戠粰鍏朵粬浜?br />聽聽聽聽聽聽聽聽聽KeyGenerator聽keyGen聽=聽KeyGenerator.getInstance("HmacMD5");聽
    聽聽聽聽聽聽聽聽聽SecretKey聽key聽=聽keyGen.generateKey();
    聽聽聽聽聽聽聽聽聽Mac聽mac聽
    =聽Mac.getInstance(key.getAlgorithm());
    聽聽聽聽聽聽聽聽聽mac.init(key);
    聽聽聽聽聽聽聽聽聽聽聽聽聽
    聽聽聽聽聽聽聽聽聽File聽infile
    =new聽File("c:\\1.txt");
    聽聽聽聽聽聽聽聽聽
    byte[]聽inputbyte=null;
    聽聽聽
    try{
    聽聽聽聽inputbyte聽
    =聽FileUtils.getBytesFromFile(infile);
    聽聽聽}
    catch聽(IOException聽e)聽{
    聽聽聽聽e.printStackTrace();
    聽聽聽}

    聽聽聽聽聽聽聽聽聽
    byte[]聽digest聽=聽mac.doFinal(inputbyte);
    聽聽聽聽聽
    聽聽聽聽聽聽聽聽聽
    //聽If聽desired,聽convert聽the聽digest聽into聽a聽string
    聽聽聽聽聽聽聽聽聽String聽HmacB64聽=new聽sun.misc.BASE64Encoder().encode(digest);
    聽聽聽聽聽聽聽聽聽System.out.println(
    "璁$畻鐨凥MAC ="+ HmacB64);
    聽聽聽聽聽}
    catch 聽(InvalidKeyException聽e)聽 {
    聽聽聽聽聽聽e.printStackTrace();
    聽聽聽聽聽}
    catch 聽(NoSuchAlgorithmException聽e)聽 {
    聽聽聽聽聽聽e.printStackTrace();
    聽聽聽聽聽}


    聽}


    }



    ]]>
    主站蜘蛛池模板: 古丈县| 鲁山县| 海南省| 东台市| 缙云县| 房产| 望都县| 沽源县| 泸溪县| 哈巴河县| 青冈县| 剑河县| 曲松县| 集贤县| 营山县| 布尔津县| 江都市| 阿拉善右旗| 阳信县| 民权县| 苏州市| 武强县| 东丽区| 清原| 红河县| 新龙县| 山丹县| 会同县| 德保县| 巫溪县| 淄博市| 新竹县| 阿坝| 琼结县| 宜丰县| 乐业县| 囊谦县| 梓潼县| 玉龙| 承德县| 平顶山市|