實驗序號:3java
1.XP基礎git
極限編程(ExtremeProgramming,XP)是一種全新而快捷的軟件開發方法。XP團隊使用現場客戶、特殊計劃方法和持續測試來提供快速的反饋和全面的交流:算法
XP軟件開發的基石是XP的活動,包括:編碼、測試、傾聽、設計。編程
2.XP核心實踐安全
3.相關工具網絡
實驗內容:框架
安裝alibaba插件,解決代碼中的規範問題。在IDEA中使用工具把下面代碼從新格式化,再研究一下Code菜單,找出一項讓本身感受最好用的功能。提交截圖,加上本身學號水印。ide
Override Methods:重載方法/新建方法 Implement Methods:執行方法 Generate:建立類裏面任何字段的getter與setter方法 Surround with:將某條語句被if、for等等封裝語句括起 Down/up:將語句下移到後一模塊以後 Move line down:調換語句順序 Comment with Line/BlockComment```:兩種註釋 Reformat Code:將代碼按標準格式縮進
編程標準使代碼更容易閱讀和理解。編程標準包含:具備說明性的名字、清晰的表達式、直截了當的控制流、可讀的代碼和註釋,以及在追求這些內容時一致地使用某些規則和慣用法的重要性。工具
Settings ->Plugins -> Browse repositories...安裝alibaba 在項目名稱上單擊右鍵,在彈出菜單上選擇編碼規約掃描
class studentdark { private int num; private String name; private int java; public int getNum() { return num; } @Override public String toString() { return "studentdark{" + "num=" + num + ", name='" + name + '\'' + ", java=" + java + '}'; } public void setNum(int num) { this.num = num; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getJava() { return java; } public void setJava(int java) { this.java = java; } } public class studentdarkTest { public static void main(String[] args) { studentdark student = new studentdark(); student.setName("caoge"); student.setNum(5312); student.setJava(94); System.out.println("學號爲"+ student.getNum() +",姓名爲"+ student.getName() +"java成績爲"+ student.getJava()); } }
密碼學包括密碼編碼學(Cryptography) 和密碼分析學(Cryptanalyst) 兩個分支。學習
密碼編碼學: 主要研究如何對信息進行編碼, 如何實現對信息的隱蔽, 是密碼學理論的基礎, 也是保密系統設計的基礎。 密碼分析學: 主要研究加密消息的破譯或消息的僞造, 是檢驗密碼體制安全性最爲直接的手段, 只有經過實際密碼分析考驗的密碼體制,纔是真正可用的。 Java安全體系結構總共分爲4個部分: - JCA( Java Cryptography Architecture, Java加密體系結構):JCA提供基本的加密框架, 如證書、 數字簽名、消息摘要和密鑰對產生器。 - JCE( Java Cryptography Extension, Java加密擴展包):JCE在JCA的基礎上做了擴展, 提供了各類加密算法、 消息摘要算法和密鑰管理等功能。JCE的實現主要在javax.crypto包( 及其子包) 中 - JSSE( Java Secure Sockets Extension, Java安全套接字擴展包):JSSE提供了基於SSL( Secure Sockets Layer,安全套接字層) 的加密功能。 在網絡的傳輸過程當中, 信息會通過多個主機(頗有可能其中一臺就被竊聽) , 最終傳送給接收者, 這是不安全的。這種確保網絡通訊安全的服務就是由JSSE來提供的。 - JAAS( Java Authentication and Authentication Service, Java鑑別與安全服務):JAAS提供了在Java平臺上進行用戶身份鑑別的功能。 咱們小組結合正在學習《密碼學》中的DES算法,以及認真閱讀婁老師博客 - Java密碼學算法,瞭解到「DES」是目前最經常使用的對稱加密算法,但安全性較差。針對DES安全性的改進產生了能知足當前安全須要的TripleDES算法,即「DESede」。決定實現TripleDES算法,在老師範例代碼上作了調整。
(1) 獲取密鑰生成器KeyGenerator kg=KeyGenerator.getInstance("DESede"); Java中KeyGenerator類中提供了建立對稱密鑰的方法。KeyGenerator類預約義了一個靜態方法getInstance( ),方法getInstance( )的參數爲字符串類型,指定加密算法的名稱。 (2) 初始化密鑰生成器kg.init(168);該步驟通常指定密鑰的長度。咱們寫的是「DESede」,則能夠是112或168位,其中112位有效。 (3) 生成密鑰SecretKey k=kg.generateKey( );密鑰可用於之後的加密和解密。
密碼學包含密碼編碼學和密碼分析學兩個分支
體驗加解密-凱撒密碼 Java對稱加密-DES算法 Java非對稱加密-RSA算法 使用密鑰協定建立共享密鑰 Java摘要算法- MD5 Java混合密碼系統 實驗任務:以結對的方式完成Java密碼學相關內容的學習,結合重構,git,代碼標準。 實驗代碼: 凱撒密碼
public class Caesar{ public static void main(String []args) throws Exception{ String s=args[0]; int key=Integer.parseInt(args[1]); String es=""; for(int i=0;i<s.length( );i++) { char c=s.charAt(i); // 是小寫字母 c = getC(key, c); es+=c; } System.out.println(es); } private static char getC(int key, char c) { if(c>='a' && c<='z') { //移動key%26位 c = move(key, c); if(c<'a') { //向左超界 c = changeCplus(c); } if(c>'z') { //向右超界 c = changeCminus(c); } } // 是大寫字母 else if(c>='A' && c<='Z') { c = move(key, c); if(c<'A') { c = changeCplus(c); } if(c>'Z') { c = changeCminus(c); } } return c; } private static char changeCminus(char c) { c -= 26; return c; } private static char changeCplus(char c) { c += 26; return c; } private static char move(int key, char c) { c+=key%26; return c; } }
public class DigestPass{ public static void main(String[ ] args) throws Exception{ String x = getString(args[0]); MessageDigest m=MessageDigest.getInstance("MD5"); m.update(x.getBytes("UTF8")); byte[] s = getDigest(m); String result=""; for (int i=0; i<s.length; i++){ result+= getString(s[i]).substring(6); } System.out.println(result); } private static String getString(byte b) { return Integer.toHexString((0x000000ff & b) | 0xffffff00); } private static byte[] getDigest(MessageDigest m) { return m.digest(); } private static String getString(String arg) { return arg; } }