色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

運用加密技術保護Java源代碼(2)

瀏覽:17日期:2024-06-29 14:49:34
內容: resolveClass( clasz );// 把類返回給調用者return clasz;} catch( IOException ie ) {throw new ClassNotFoundException( ie.toString() );} catch( GeneralSecurityException gse ) {throw new ClassNotFoundException( gse.toString() );}}Listing 2顯示了一個簡單的loadClass實現。代碼中的大部分對所有ClassLoader對象來說都一樣,但有一小部分(已通過注釋標記)是特有的。在處理過程中,ClassLoader對象要用到其他幾個輔助方法: findLoadedClass:用來進行檢查,以便確認被請求的類當前還不存在。loadClass方法應該首先調用它。 defineClass:獲得原始類文件字節碼數據之后,調用defineClass把它轉換成一個Class對象。任何loadClass實現都必須調用這個方法。 findSystemClass:提供默認ClassLoader的支持。如果用來尋找類的定制方法不能找到指定的類(或者有意地不用定制方法),則可以調用該方法嘗試默認的裝入方式。這是很有用的,特別是從普通的JAR文件裝入標準Java類時。 resolveClass:當JVM想要裝入的不僅包括指定的類,而且還包括該類引用的所有其他類時,它會把loadClass的resolve參數設置成true。這時,我們必須在返回剛剛裝入的Class對象給調用者之前調用resolveClass。三、加密、解密 Java加密擴展即Java Cryptography Extension,簡稱JCE。它是Sun的加密服務軟件,包含了加密和密匙生成功能。JCE是JCA(Java Cryptography Architecture)的一種擴展。 JCE沒有規定具體的加密算法,但提供了一個框架,加密算法的具體實現可以作為服務提供者加入。除了JCE框架之外,JCE軟件包還包含了SunJCE服務提供者,其中包括許多有用的加密算法,比如DES(Data Encryption Standard)和Blowfish。 為簡單計,在本文中我們將用DES算法加密和解密字節碼。下面是用JCE加密和解密數據必須遵循的基本步驟:步驟1:生成一個安全密匙。在加密或解密任何數據之前需要有一個密匙。密匙是隨同被加密的應用一起發布的一小段數據,Listing 3顯示了如何生成一個密匙。 【Listing 3:生成一個密匙】// DES算法要求有一個可信任的隨機數源SecureRandom sr = new SecureRandom();// 為我們選擇的DES算法生成一個KeyGenerator對象KeyGenerator kg = KeyGenerator.getInstance( 'DES' );kg.init( sr );// 生成密匙SecretKey key = kg.generateKey();// 獲取密匙數據byte rawKeyData[] = key.getEncoded();/* 接下來就可以用密匙進行加密或解密,或者把它保存為文件供以后使用 */doSomething( rawKeyData );步驟2:加密數據。得到密匙之后,接下來就可以用它加密數據。除了解密的ClassLoader之外,一般還要有一個加密待發布應用的獨立程序(見Listing 4)。 【Listing 4:用密匙加密原始數據】// DES算法要求有一個可信任的隨機數源SecureRandom sr = new SecureRandom();byte rawKeyData[] = /* 用某種方法獲得密匙數據 */;// 從原始密匙數據創建DESKeySpec對象DESKeySpec dks = new DESKeySpec( rawKeyData );// 創建一個密匙工廠,然后用它把DESKeySpec轉換成// 一個SecretKey對象SecretKeyFactory keyFactory = SecretKeyFactory.getInstance( 'DES' );SecretKey key = keyFactory.generateSecret( dks );// Cipher對象實際完成加密操作Cipher cipher = Cipher.getInstance( 'DES' );// 用密匙初始化Cipher對象cipher.init( Cipher.ENCRYPT_MODE, key, sr );// 現在,獲取數據并加密byte data[] = /* 用某種方法獲取數據 */// 正式執行加密操作byte encryptedData[] = cipher.doFinal( data );// 進一步處理加密后的數據doSomething( encryptedData );步驟3:解密數據。運行經過加密的應用時,ClassLoader分析并解密類文件。操作步驟如Listing 5所示。 【Listing 5:用密匙解密數據】// DES算法要求有一個可信任的隨機數源SecureRandom sr = new SecureRandom();byte rawKeyData[] = /* 用某種方法獲取原始密匙數據 */;// 從原始密匙數據創建一個DESKeySpec對象DESKeySpec dks = new DESKeySpec( rawKeyData );// 創建一個密匙工廠,然后用它把DESKeySpec對象轉換成// 一個SecretKey對象SecretKeyFactory keyFactory = SecretKeyFactory.getInstance( 'DES' );SecretKey key = keyFactory.generateSecret( dks );// Cipher對象實際完成解密操作Cipher cipher = Cipher.getInstance( 'DES' );// 用密匙初始化Cipher對象cipher.init( Cipher.DECRYPT_MODE, key, sr ); Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標簽: Java
相關文章:
主站蜘蛛池模板: 一级毛片免费视频观看 | 国产精品亚洲精品一区二区三区 | 国产精品久久久久久久久久日本 | 久久黄色网址 | 久久精品无遮挡一级毛片 | 99视频有精品视频免费观看 | 久久爽久久爽久久免费观看 | 国产精品视频久久 | 三级国产精品一区二区 | 美国免费高清一级毛片 | 欧美日韩一区二区三区免费 | 天海翼精品久久中文字幕 | 日本一级特黄特色大片免费视频 | 99久在线精品99re6视频 | 国产亚洲欧美另类久久久 | 一级欧美 | 亚洲国产国产综合一区首页 | 国产精品久久久久久久久久久久 | 国产一区二区三区手机在线观看 | 男人天堂男人天堂 | 久草欧美视频 | 美女黄视频在线 | 一级特黄特黄毛片欧美的 | 国产一区二区三区四区波多野结衣 | 国产精品美女免费视频大全 | 亚洲一级毛片视频 | 国产欧美精品一区二区三区 | 欧美成人一区二区三区 | 成人女人a毛片在线看 | 成人精品视频在线 | 国产欧美日韩成人 | 日本一极毛片兔费看 | 久久免费视屏 | 欧美亚洲免费久久久 | 国产精品观看在线亚洲人成网 | 免费国产成人高清无线看软件 | 午夜一级毛片不卡 | 亚洲国产99在线精品一区二区 | 高颜值美女啪啪 | 免费看岛国视频在线观看 | 亚洲国产亚洲片在线观看播放 |