日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

如何有效防止Java程序源碼被人偷窺?(2)_Mssql數(shù)據(jù)庫教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:如何快速生成100萬不重復的8位編號
最近在論壇看到有人問,如何快速生成100萬不重復的8位編號,對于這個問題,有幾點是需要注意的: 1. 如何生成8位隨機數(shù),生成的數(shù)越隨機,重復的可能性當然越小 2. 控制不重復

Listing 2顯示了一個簡單的loadClass實現(xiàn)。代碼中的大部分對所有ClassLoader對象來說都一樣,但有一小部分(已通過注釋標記)是特有的。在處理過程中,ClassLoader對象要用到其他幾個輔助方法:

findLoadedClass:用來進行檢查,以便確認被請求的類當前還不存在。loadClass方法應該首先調用它。

defineClass:獲得原始類文件字節(jié)碼數(shù)據(jù)之后,調用defineClass把它轉換成一個Class對象。任何loadClass實現(xiàn)都必須調用這個方法。

findSystemClass:提供默認ClassLoader的支持。如果用來尋找類的定制方法不能找到指定的類(或者有意地不用定制方法),則可以調用該方法嘗試默認的裝入方式。這是很有用的,特別是從普通的JAR文件裝入標準Java類時。

resolveClass:當JVM想要裝入的不僅包括指定的類,而且還包括該類引用的所有其他類時,它會把loadClass的resolve參數(shù)設置成true。這時,我們必須在返回剛剛裝入的Class對象給調用者之前調用resolveClass。

三、加密、解密

Java加密擴展即Java Cryptography Extension,簡稱JCE。它是Sun的加密服務軟件,包含了加密和密匙生成功能。JCE是JCA(Java Cryptography Architecture)的一種擴展。

JCE沒有規(guī)定具體的加密算法,但提供了一個框架,加密算法的具體實現(xiàn)可以作為服務提供者加入。除了JCE框架之外,JCE軟件包還包含了SunJCE服務提供者,其中包括許多有用的加密算法,比如DES(Data Encryption Standard)和Blowfish。

為簡單計,在本文中我們將用DES算法加密和解密字節(jié)碼。下面是用JCE加密和解密數(shù)據(jù)必須遵循的基本步驟:

步驟1:生成一個安全密匙。在加密或解密任何數(shù)據(jù)之前需要有一個密匙。密匙是隨同被加密的應用一起發(fā)布的一小段數(shù)據(jù),Listing 3顯示了如何生成一個密匙。 【Listing 3:生成一個密匙】

以下為引用的內(nèi)容:
// DES算法要求有一個可信任的隨機數(shù)源
  SecureRandom sr = new SecureRandom();
  // 為我們選擇的DES算法生成一個KeyGenerator對象
  KeyGenerator kg = KeyGenerator.getInstance( "DES" );
  kg.init( sr );
  // 生成密匙
  SecretKey key = kg.generateKey();
  // 獲取密匙數(shù)據(jù)
  byte rawKeyData[] = key.getEncoded();
  /* 接下來就可以用密匙進行加密或解密,或者把它保存
  為文件供以后使用 */
  doSomething( rawKeyData );

步驟2:加密數(shù)據(jù)。得到密匙之后,接下來就可以用它加密數(shù)據(jù)。除了解密的ClassLoader之外,一般還要有一個加密待發(fā)布應用的獨立程序(見Listing 4)。 【Listing 4:用密匙加密原始數(shù)據(jù)】

以下為引用的內(nèi)容:
// DES算法要求有一個可信任的隨機數(shù)源
  SecureRandom sr = new SecureRandom();
  byte rawKeyData[] = /* 用某種方法獲得密匙數(shù)據(jù) */;
  // 從原始密匙數(shù)據(jù)創(chuàng)建DESKeySpec對象
  DESKeySpec dks = new DESKeySpec( rawKeyData );
  // 創(chuàng)建一個密匙工廠,然后用它把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 );
  // 現(xiàn)在,獲取數(shù)據(jù)并加密
  byte data[] = /* 用某種方法獲取數(shù)據(jù) */
  // 正式執(zhí)行加密操作
  byte encryptedData[] = cipher.doFinal( data );
  // 進一步處理加密后的數(shù)據(jù)
  doSomething( encryptedData );
  步驟3:解密數(shù)據(jù)。運行經(jīng)過加密的應用時,ClassLoader分析并解密類文件。操作步驟如Listing 5所示。 【Listing 5:用密匙解密數(shù)據(jù)】
  // DES算法要求有一個可信任的隨機數(shù)源
  SecureRandom sr = new SecureRandom();
  byte rawKeyData[] = /* 用某種方法獲取原始密匙數(shù)據(jù) */;
  // 從原始密匙數(shù)據(jù)創(chuàng)建一個DESKeySpec對象
  DESKeySpec dks = new DESKeySpec( rawKeyData );
  // 創(chuàng)建一個密匙工廠,然后用它把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 );
  // 現(xiàn)在,獲取數(shù)據(jù)并解密
  byte encryptedData[] = /* 獲得經(jīng)過加密的數(shù)據(jù) */
  // 正式執(zhí)行解密操作
  byte decryptedData[] = cipher.doFinal( encryptedData );
  // 進一步處理解密后的數(shù)據(jù)
  doSomething( decryptedData );

分享:四個語句幫你提高 SQL Server 的伸縮性
本文講解如何使用LEFT JOIN、CROSS JOIN以及IDENTITY值的檢索,這些技術來提高基于SQL Server的應用程序的性能或改善其可伸縮性。 你將遇到的現(xiàn)象:應用程序中的SQL 查詢不能按照您想要的方式

來源:模板無憂//所屬分類:Mssql數(shù)據(jù)庫教程/更新時間:2008-08-22
相關Mssql數(shù)據(jù)庫教程