當前位置:首頁 » 編程語言 » 基於java

基於java

發布時間: 2022-02-06 04:09:07

⑴ 基於java的通用試題庫管理系統的設計與實現(畢業論文)

如果是畢業論文管理系統,
可以從題目管理,任務書管理,評分|成績管理,答辯組管理,評委管理,學生信息管理,通知公告管理等功能角度分析設計與開發。
如果是試題庫管理系統,
可以從考場設置,監考設置,考試管理,考生管理,考場及考試時間查詢,教室管理,教職工管理,學生信息管理角度分析設計與開發。
關鍵字:java , 管理 , 系統 , 題庫 ,

⑵ 基於java語言的數字簽名

Java加密和數字簽名編程快速入門

本文主要談一下密碼學中的加密和數字簽名,以及其在java中如何進行使用。對密碼學有興趣的夥伴,推薦看Bruce Schneier的著作:Applied Crypotography。在jdk1.5的發行版本中安全性方面有了很大的改進,也提供了對RSA演算法的直接支持,現在我們從實例入手解決問題(本文僅是作為簡單介紹):

一、密碼學上常用的概念

1)消息摘要:

這是一種與消息認證碼結合使用以確保消息完整性的技術。主要使用單向散列函數演算法,可用於檢驗消息的完整性,和通過散列密碼直接以文本形式保存等,目前廣泛使用的演算法有MD4、MD5、SHA-1,jdk1.5對上面都提供了支持,在java中進行消息摘要很簡單, java.security.MessageDigest提供了一個簡易的操作方法:

/**
*MessageDigestExample.java
*Copyright 2005-2-16
*/
import java.security.MessageDigest;
/**
*單一的消息摘要演算法,不使用密碼.可以用來對明文消息(如:密碼)隱藏保存
*/
public class MessageDigestExample{
public static void main(String[] args) throws Exception{
if(args.length!=1){
System.err.println("Usage:java MessageDigestExample text");
System.exit(1);
}

byte[] plainText=args[0].getBytes("UTF8");

//使用getInstance("演算法")來獲得消息摘要,這里使用SHA-1的160位演算法
MessageDigest messageDigest=MessageDigest.getInstance("SHA-1");

System.out.println("\n"+messageDigest.getProvider().getInfo());
//開始使用演算法
messageDigest.update(plainText);
System.out.println("\nDigest:");
//輸出演算法運算結果
System.out.println(new String(messageDigest.digest(),"UTF8"));
}
}

還可以通過消息認證碼來進行加密實現,javax.crypto.Mac提供了一個解決方案,有興趣者可以參考相關API文檔,本文只是簡單介紹什麼是摘要演算法。

2)私鑰加密:

消息摘要只能檢查消息的完整性,但是單向的,對明文消息並不能加密,要加密明文的消息的話,就要使用其他的演算法,要確保機密性,我們需要使用私鑰密碼術來交換私有消息。

這種最好理解,使用對稱演算法。比如:A用一個密鑰對一個文件加密,而B讀取這個文件的話,則需要和A一樣的密鑰,雙方共享一個私鑰(而在web環境下,私鑰在傳遞時容易被偵聽):

使用私鑰加密的話,首先需要一個密鑰,可用javax.crypto.KeyGenerator產生一個密鑰(java.security.Key),然後傳遞給一個加密工具(javax.crypto.Cipher),該工具再使用相應的演算法來進行加密,主要對稱演算法有:DES(實際密鑰只用到56位),AES(支持三種密鑰長度:128、192、256位),通常首先128位,其他的還有DESede等,jdk1.5種也提供了對對稱演算法的支持,以下例子使用AES演算法來加密:

/**
*PrivateExmaple.java
*Copyright 2005-2-16
*/
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import java.security.Key;

/**
*私鈅加密,保證消息機密性
*/
public class PrivateExample{
public static void main(String[] args) throws Exception{
if(args.length!=1){
System.err.println("Usage:java PrivateExample <text>");
System.exit(1);
}
byte[] plainText=args[0].getBytes("UTF8");

//通過KeyGenerator形成一個key
System.out.println("\nStart generate AES key");
KeyGenerator keyGen=KeyGenerator.getInstance("AES");
keyGen.init(128);
Key key=keyGen.generateKey();
System.out.println("Finish generating DES key");

//獲得一個私鈅加密類Cipher,ECB是加密方式,PKCS5Padding是填充方法
Cipher cipher=Cipher.getInstance("AES/ECB/PKCS5Padding");
System.out.println("\n"+cipher.getProvider().getInfo());

//使用私鈅加密
System.out.println("\nStart encryption:");
cipher.init(Cipher.ENCRYPT_MODE,key);
byte[] cipherText=cipher.doFinal(plainText);
System.out.println("Finish encryption:");
System.out.println(new String(cipherText,"UTF8"));

System.out.println("\nStart decryption:");
cipher.init(Cipher.DECRYPT_MODE,key);
byte[] newPlainText=cipher.doFinal(cipherText);
System.out.println("Finish decryption:");

System.out.println(new String(newPlainText,"UTF8"));

}
}

3)公鑰加密:

上面提到,私鑰加密需要一個共享的密鑰,那麼如何傳遞密鑰呢?web環境下,直接傳遞的話很容易被偵聽到,幸好有了公鑰加密的出現。公鑰加密也叫不對稱加密,不對稱演算法使用一對密鑰對,一個公鑰,一個私鑰,使用公鑰加密的數據,只有私鑰能解開(可用於加密);同時,使用私鑰加密的數據,只有公鑰能解開(簽名)。但是速度很慢(比私鑰加密慢100到1000倍),公鑰的主要演算法有RSA,還包括Blowfish,Diffie-Helman等,jdk1.5種提供了對RSA的支持,是一個改進的地方:

/**
*PublicExample.java
*Copyright 2005-2-16
*/
import java.security.Key;
import javax.crypto.Cipher;
import java.security.KeyPairGenerator;
import java.security.KeyPair;
/**
*一個簡單的公鈅加密例子,Cipher類使用KeyPairGenerator生成的公鈅和私鈅
*/
public class PublicExample{
public static void main(String[] args) throws Exception{
if(args.length!=1){
System.err.println("Usage:java PublicExample <text>");
System.exit(1);
}

byte[] plainText=args[0].getBytes("UTF8");
//構成一個RSA密鑰
System.out.println("\nStart generating RSA key");
KeyPairGenerator keyGen=KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
KeyPair key=keyGen.generateKeyPair();
System.out.println("Finish generating RSA key");

//獲得一個RSA的Cipher類,使用公鈅加密
Cipher cipher=Cipher.getInstance("RSA/ECB/PKCS1Padding");
System.out.println("\n"+cipher.getProvider().getInfo());

System.out.println("\nStart encryption");
cipher.init(Cipher.ENCRYPT_MODE,key.getPublic());
byte[] cipherText=cipher.doFinal(plainText);
System.out.println("Finish encryption:");
System.out.println(new String(cipherText,"UTF8"));

//使用私鈅解密
System.out.println("\nStart decryption");
cipher.init(Cipher.DECRYPT_MODE,key.getPrivate());
byte[] newPlainText=cipher.doFinal(cipherText);
System.out.println("Finish decryption:");
System.out.println(new String(newPlainText,"UTF8"));
}
}

4)數字簽名:

數字簽名,它是確定交換消息的通信方身份的第一個級別。上面A通過使用公鑰加密數據後發給B,B利用私鑰解密就得到了需要的數據,問題來了,由於都是使用公鑰加密,那麼如何檢驗是A發過來的消息呢?上面也提到了一點,私鑰是唯一的,那麼A就可以利用A自己的私鑰進行加密,然後B再利用A的公鑰來解密,就可以了;數字簽名的原理就基於此,而通常為了證明發送數據的真實性,通過利用消息摘要獲得簡短的消息內容,然後再利用私鑰進行加密散列數據和消息一起發送。java中為數字簽名提供了良好的支持,java.security.Signature類提供了消息簽名:

/**
*DigitalSignature2Example.java
*Copyright 2005-2-16
*/
import java.security.Signature;
import java.security.KeyPairGenerator;
import java.security.KeyPair;
import java.security.SignatureException;

/**
*數字簽名,使用RSA私鑰對對消息摘要簽名,然後使用公鈅驗證 測試
*/
public class DigitalSignature2Example{
public static void main(String[] args) throws Exception{
if(args.length!=1){
System.err.println("Usage:java DigitalSignature2Example <text>");
System.exit(1);
}

byte[] plainText=args[0].getBytes("UTF8");
//形成RSA公鑰對
System.out.println("\nStart generating RSA key");
KeyPairGenerator keyGen=KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);

KeyPair key=keyGen.generateKeyPair();
System.out.println("Finish generating RSA key");
//使用私鈅簽名
Signature sig=Signature.getInstance("SHA1WithRSA");
sig.initSign(key.getPrivate());
sig.update(plainText);
byte[] signature=sig.sign();
System.out.println(sig.getProvider().getInfo());
System.out.println("\nSignature:");
System.out.println(new String(signature,"UTF8"));

//使用公鈅驗證
System.out.println("\nStart signature verification");
sig.initVerify(key.getPublic());
sig.update(plainText);
try{
if(sig.verify(signature)){
System.out.println("Signature verified");
}else System.out.println("Signature failed");
}catch(SignatureException e){
System.out.println("Signature failed");
}
}
}

5)數字證書。

還有個問題,就是公鑰問題,A用私鑰加密了,那麼B接受到消息後,用A提供的公鑰解密;那麼現在有個討厭的C,他把消息攔截了,然後用自己的私鑰加密,同時把自己的公鑰發給B,並告訴B,那是A的公鑰,結果....,這時候就需要一個中間機構出來說話了(相信權威,我是正確的),就出現了Certificate Authority(也即CA),有名的CA機構有Verisign等,目前數字認證的工業標準是:CCITT的X.509:
數字證書:它將一個身份標識連同公鑰一起進行封裝,並由稱為認證中心或 CA 的第三方進行數字簽名。

密鑰庫:java平台為你提供了密鑰庫,用作密鑰和證書的資源庫。從物理上講,密鑰庫是預設名稱為 .keystore 的文件(有一個選項使它成為加密文件)。密鑰和證書可以擁有名稱(稱為別名),每個別名都由唯一的密碼保護。密鑰庫本身也受密碼保護;您可以選擇讓每個別名密碼與主密鑰庫密碼匹配。

使用工具keytool,我們來做一件自我認證的事情吧(相信我的認證):

1、創建密鑰庫keytool -genkey -v -alias feiUserKey -keyalg RSA 默認在自己的home目錄下(windows系統是c:\documents and settings\<你的用戶名> 目錄下的.keystore文件),創建我們用 RSA 演算法生成別名為 feiUserKey 的自簽名的證書,如果使用了-keystore mm 就在當前目錄下創建一個密鑰庫mm文件來保存密鑰和證書。

2、查看證書:keytool -list 列舉了密鑰庫的所有的證書

也可以在dos下輸入keytool -help查看幫助。

⑶ 基於JAVA平台三種分布式體系結構

j2se j2me j2ee

j2se 是java的基礎知識 部分C/S構架的軟體和可視化開發軟體

如大型OA ERP 各種小游戲等都是 j2se 做的.因為JAVA本身是
解釋性語言在做這方面的軟體上沒有優勢可言.

j2me 是手機類的軟體開發,如手機游戲,手機界面等等,此方向不錯
在國內也算是個缺口比較大的行業了,隨著科技的發展此方向優勢會
慢慢顯現出來.

j2ee 是目前java的最大優勢所在,因為java本身開源所以發展日新月異
大型企業級應用,電子商務等等,都是依託J2EE 這個標准設計開發的,同時J2EE 也是一種B/S 開發模式,學這個方向 需要會的內容很多,如j2se
javabean ,servlet,ejb 等這些是基礎內容 想做J2EE開發 你還要會JSP
流行框架 struts hibernate ibatis spring jsf 等等 很復雜,非朝夕能學會的,需要有毅力或有開發基礎者學之.

⑷ 基於JavaWeb的小說網站怎麼寫

Spring MVC + Spring + Mybatis , 一般通稱為SSM框架組合, 這是寫後台伺服器程序的, 你可以說他優雅, 美觀事什麼鬼, 他們不寫頁面.
前端網頁改怎麼寫怎麼寫, 看具體用什麼前端框架了 或者原生HTML + CSS + JS寫... 就是累點吧

⑸ 求好心人給個基於java的畢業設計和論文

哈哈,這個太多了
說實話,javaweb的畢業設計說來說去就那麼些,比如那框架做一個管理系統,不要看這么多年都是這么些題目,但是對於大部分同學來說重新完整實現還是比較困難的
所以一般都是弄一個成品或者整合框架做二次開發,論文東拼西湊只要過了查重就可以了,look at my name,上面有好多項目源碼,希望你仔細找一下

⑹ 高分求一篇基於java的學生信息管理系統的開題報告

粘的有點亂,湊合看吧。
畢業論文(設計)開題報告 論文題目 學生管理系統設計與實現
學生姓名 學 號 專 業 指導教師 職 稱 學 歷 開題報告文獻綜述)內容: 一、開發背景 學校學生信息管理是學校教務管理中的一個極為重要的環節,它是整個學校管理的核心和基礎。現在我國的大中小學校檔案的管理水平還停留在紙介質的基礎上,這樣的機智已經不能適應時代的發展,因為它浪費了許多人力和物力,在信息時代這種傳統的管理方法必然被以計算機為基礎的信息管理所取代。信息社會的高科技,商品經濟化的高效益,使計算機的應用已普及到經濟和社會生活的各個領域。計算機已經成為我們學習和工作的得力助手:今天,計算機的價格已經十分低廉,性能卻有了長足的進步。它已經被應用於許多領域,計算機之所以如此流行的原因主要有以下幾個方面:首先,計算機可以代替人工進行許多繁雜的勞動;其次,計算機可以節省許多資源;第三,計算機可以大大的提高人們的工作效率;第四,計算機可以使敏感文檔更加安全,等等。為了適應現代社會人們高度強烈的時間觀念,學籍管理系統軟體將會為教學辦公室帶來極大的方便。隨著學校的規模不斷擴大,學生數量急劇增加,有關學生的各種信息量也成倍增長。 二、選題的意義 通過學生管理系統,可以做到信息的規范管理,科學統計和快速的查詢,從而減少管理方面的工作量。毋庸置疑,切實有效地把計算機管理引入學校教務管理中,對於促進學校管理制度,提高學校教學質量與辦學水平有著顯著意義。 三.系統研究內容 此學生信息管理系統需要完成的功能主要有: ● 有關學籍信息的輸入,包括學生基本信息、所在班級、所學課程和成績等. ● 學生信息的查詢,包括學生基本信息、所在班級、已學課程和成績等. ● 學生信息的修改. ● 班級管理信息的輸入,包括班級設置、年級信息等. ● 班級管理信息的查詢. ● 班級管理信息的修改 ● 學校基本課程信息的輸入. ● 學校課程信息的修改.
● 學校課程的設置和修改. ● 學生成績的輸入. ● 學生成績信息的修改 ● 學生信息的查詢. ● 學生信息的統計. 四、畢業設計思路框架 (一)設計方法 1.查詢相關資料,了解本系統的研究意義。可以上網搜索或者是去圖書館查閱相關資料。 2.通過查詢資料了解該系統要如何做,及要做哪些東西。 3.設計出大體上的功能模塊,畫出模塊圖。 4.通過進一步的了解,對每個功能模塊進行細化,將每一步都想清楚。制定出每一步的做法和注意的地方。 5.對設計好的程序進行調試,通過調試發現存在的問題並解決,從而達到完善系統的目的。 6.最後,整理各階段的設計記錄文檔,寫成論文稿。 開發工具開發工具開發工具開發工具 選用設計語言 目前的可用的設計技術在設計此類系統上的資料庫技術已經非常成熟,可提供的開發工具也很多,例如:Visual C++ ,Visual Basic,PowerBuilder,Dephi, visual foxpro等,它們都是很好的資料庫開發工具,都是可視化開發工具,功能強大,開發容易,開發周期短,對於本任務都能夠勝任。 Visual Basic是一種可視化的、面對對象和條用事件驅動方式的結構化高級程序設計,可用於開發Windows環境下的種類應用程序。它簡單易學、效率高,且功能強大,可以與Windows的專業開發工具SDK相媲美,而且程序開發人員不必具有C/C++編程基礎。在Visual Basic環境下,利用事件驅動的編程機制、新穎易用的可視化設計工具,使用Windows內部的應用程序介面(API)函數,以及動態鏈接庫(DLL)、動態數據交換(DDE)、對象的鏈接與嵌入(OLE)、開放式數據訪問(ODBC)等技術,可以高效、快速地開發出Windows環境下功能強大、圖形界面豐富的應用軟體系統。
總的來說,Visual Basic具有以下特點: 可視化編程: 用傳統程序設計語言設計程序時,都是通過編寫程序代碼來設計用戶界面,在設計過程中看不到界面的實際顯示效果,必須編譯後運行程序才能觀察。如果對界面的效果不滿意,還要回到程序中修改。有時候,這種編程-編譯-修改的操作可能要反復多次,大大影響了軟體開發效率。Visual Basic提供了可視化設計工具,把Windows界面設計的復雜性「封裝」起來,開發人員不必為界面設計而編寫大量程序代碼。只需要按設計要求的屏幕布局,用系統提供的工具,在屏幕上畫出各種「部件」,即圖形對象,並設置這些圖形對象的屬性。Visual Basic自動產生界面設計代碼,程序設計人員只需要編寫實現程序功能的那部分代碼,從而可以大大提高程序設計的效率。 面向對象的程序設計 4.0版以後的Visual Basic支持面向對象的程序設計,但它與一般的面向對象的程序設計語言(C++)不完全相同。在一般的面向對象程序設計語言中,對象由程序代碼和數據組成,是抽象的概念;而Visual Basic則是應用面向對象的程序設計方法(OOP),把程序和數據封裝起來作為一個對象,並為每個對象賦予應有的屬性,使對象成為實在的東西。在設計對象時,不必編寫建立和描述每個對象的程序代碼,而是用工具畫在界面上,Visual Basic自動生成對象的程序代碼並封裝起來。每個對象以圖形方式顯示在界面上,都是可視的。 結構化程序設計語言 Visual Basic是在BASIC語言的基礎上發展起來的,具有高級程序設計語言的語句結構,接近於自然語言和人類的邏輯思維方式。Visual Basic語句簡單易懂,其編輯器支持彩色代碼,可自動進行語法錯誤檢查,同時具有功能強大且使用靈活的調試器和編譯器。 Visual Basic是解釋型語言,在輸入代碼的同時,解釋系統將高級語言分解翻譯成計算機可以識別的機器指令,並判斷每個語句的語法錯誤。在設計Visual Basic程序的過程中,隨時可以運行程序,而在整個程序設計好之後,可以編譯生成可執行文件(.EXE),脫離Visual Basic環境,直接在Windows環境下運行。 5.2選用ACCESS作為後台資料庫 ACCESS2000 就是關系資料庫管理工具,資料庫能匯集各種信息以供查詢、存儲和檢索。ACCESS 的優點在於它能使用數據表示圖或自定義窗體收集信息。數據表示圖提供了一種類似於 Excel的電子表格,可以使資料庫一目瞭然。另外,ACCESS允許創建自定義
報表用於列印或輸出資料庫中的信息。ACCESS也提供了數據存儲庫,可以使用桌面資料庫文件把數據文件置於網路文件伺服器,與其他網路用戶共享資料庫。ACCESS 是一種關系資料庫管理工具,關系資料庫是已開發的最通用的資料庫之一。如上所述,ACCESS 作為關系資料庫開發具備了許多優點,可以在一個數據包中同時擁有桌面資料庫的便利和關系資料庫的強大功能。 (三)設計要求  資料庫相關理論。汽車租賃管理是一個典型的資料庫管理信息系統,系統的開發用到許多資料庫相關的理論,因此要求作者具有這方面的基礎知識,能夠正確運用資料庫理論進行系統的分析、邏輯設計、實體屬性以及ER圖等的轉換,明白範式的相關內容,從而能夠根據系統實際要求,設計出滿足要求的合理的資料庫。  面向對象理論。當前流行的編程思想是面向對象思想,而且許多工具,如Visual Basic,體現的也正是這種思想。面向對象思想與傳統的面向過程編程思想相比,具有明顯的優勢,而且汽車租賃系統的設計也要求用面向對象編程工具來實現。這就要求作者在進行畢業設計時,應該明白面向對象的思想,並能夠運用其思想到實際的工作中。  軟體工程思想。大型系統的開發要用到軟體工程相關的理論。雖然汽車租賃系統比較小,但是最好也能按照系統設計的生命周期模型來進行。嚴格按照軟體工程思想和管理信息系統的開發步驟,設計並實現一個汽車租賃管理信息系統。以系統開發過程為主線,從需求分析,邏輯設計,總體設計,詳細設計以及系統測試、實施各階段的主要內容和成果,包括系統結構圖、業務流程圖、數據流程圖、E-R模型、數據字典、物理表實現及其關系、功能模塊演算法流程、界面設計等等。  一定的實際動手能力和實際編程經驗。系統最後要落實到windows下的編程,因此要求作者對windows下的資料庫編程具有一定的基礎,能夠較為熟練的進行資料庫相關程序的開發。以Microsoft公司的Visual Basic 6.0為開發工具,以ACCESS為後台資料庫,對上述邏輯設計的成果進行轉換,實現一個完整的可運行的汽車租賃管理系統。 (四)設計環境 硬體環境 隨著計算機硬體的高速發展,現在普通的機子已經可以做為一個伺服器端使用。 CPU:CⅣ 2.0或更高 硬碟:40G或更多 內存:128M或更高(建議使用256M)
軟體環境軟體環境軟體環境軟體環境 操作系統 Windows 2000 Server /Windows XP 網路協議 TCP/IP 資料庫 ACCESS 開發語言 VB 其它輔助軟體:Microsoft Word等 四、參考文獻 [1] 丁寶康:《資料庫實用教程》, 清華大學出版社,2004年。 [2] 賽奎春等:《VB資料庫開發關鍵技術與實例應用》,人民郵電出版社,2003年。 [3] 汪詩林等:《數據結構演算法與應用》,機械工業出版社,2005年。 [4] 羅征等:《VB 6.0從入門到精通》,電子工業出版社,2004年。 [5] 馮博琴等:《面向對象分析與設計》,機械工業出版社,2003年。 [6] Awad.E.M, Gotterer M.H: Visual Basic 6.0, 1992. [7] Robert.H.Dependahl:《Database Principles and Applications》.Williams Brown,2003. 報告人簽名: 年 月
指導教師對開題報告指導教師對開題報告指導教師對開題報告((((文獻綜述文獻綜述文獻綜述文獻綜述))))的評語的評語的評語的評語:::: 指導教師簽名: 年 月

⑺ 什麼是基於JAVA技術

1.基於JAVA技術就是在java虛擬機里運行的各種系統,使用java的類庫
2.JAVA技術有什麼特點
a. JAVA技術最大的特點是平台無關性,所以不會局限於某 種操作系統(window),不會受制於人
b. 另外一個特點是技術開源性,開發人員可以清楚地看到技術的實現並可以根據自己的需要修改,這是許多大的公司首要考慮的
c.免費的
d.安全的 windows 病毒多阿

⑻ Web應用開發(基於Java),什麼意思

開發web應用程序有多種方法:asp,jsp(java),php .....
java也有不同領域的應用:j2se(桌面),j2ee(企業),j2me(嵌入式)

當用java來開發基於b/s的web程序時,就是所謂的 基於java的web應用開發

熱點內容
華為存儲少 發布:2024-12-29 08:08:43 瀏覽:287
php獲取文件創建時間 發布:2024-12-29 08:06:27 瀏覽:921
為什麼淘寶緩存是0 發布:2024-12-29 08:01:00 瀏覽:705
pythonstring轉json 發布:2024-12-29 07:55:15 瀏覽:491
存儲卡128g 發布:2024-12-29 07:40:31 瀏覽:325
阿里雲伺服器綁定ip 發布:2024-12-29 07:18:00 瀏覽:58
手機存儲卡SD卡 發布:2024-12-29 07:16:26 瀏覽:220
kx驅動源碼 發布:2024-12-29 07:16:17 瀏覽:163
通達信完全加密公式 發布:2024-12-29 07:10:36 瀏覽:899
河南電子發票伺服器地址和埠 發布:2024-12-29 07:07:19 瀏覽:938