实验序号: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; } }