农业生态园电商网站建设,长沙网络科技有限公司,渠道合作一站式平台,广告有限公司MD5
MD5: 1、压缩性
2、容易计算 3、抗修改性
4、弱抗碰撞 5、强抗碰撞
为什么需要MD5#xff1f;
存储一些敏感信息的时候#xff0c;如果不进行加密会出现安全问题。
例如#xff1a;系统登录的密码#xff0c;如果数据库中的密码采用明文#xff0c;一旦数据库泄…MD5
MD5: 1、压缩性
2、容易计算 3、抗修改性
4、弱抗碰撞 5、强抗碰撞
为什么需要MD5
存储一些敏感信息的时候如果不进行加密会出现安全问题。
例如系统登录的密码如果数据库中的密码采用明文一旦数据库泄露则用户的密码直接泄露。但是使用MD5加密算法之后即使数据泄露也不会被轻易的破解相对安全。
public class MD5Utils {public static String getPWD( String strs ){/** 加密需要使用JDK中提供的类*/StringBuffer sb new StringBuffer();try{MessageDigest digest MessageDigest.getInstance(MD5);byte[] bs digest.digest(strs.getBytes());for (byte b : bs) {int x b 255;String s Integer.toHexString(x);if( x 0 x 16 ){sb.append(0);sb.append(s);}else{sb.append(s);}}}catch( Exception e){System.out.println(加密失败);}return sb.toString();}} 原理说明 MD5码以512位分组来处理输入的信息且每一分组又被划分为16个32位子分组经过了一系列的处理后算法的输出由四个32位分组组成将这四个32位分组级联后将生成一个128位散列值。 总体流程如下图所示每次的运算都由前一轮的128位结果值和当前的512bit值进行运算 序列化 序列化其实就是将一个对象转化为一种格式能够更好的传输和电脑理解。
反序列化是转换过来便于人们观看的。
public class Person implements serializable
{private string name;private int age;public Person ( String nameint age) {this.name name ;this.age age;
);public class write{public static void main(String[] args) {try (//创建一个objectoutputStream输出流objectoutputStream oos new ObjectoutputStream(newFileOutputStream(object.txt)));
/将对象序列化到文件sPerson person new Person ( 1,23);oos.write( person ) ;
}catch (Exception e{e.printStackTrace();
}
正则表达式
正则表达式是一种字符串匹配一的模式
作业 数据验证:比如电话号码、邮箱等 替换文本:快速找到特定文本用于替换 快速提取字符串:基于匹配原则快速从文档中查找或提取子字符串
比如简单实现一个身份证的正则表达式 socket简单实现多个线程对一个服务器
package login;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;public class Client {public static void main(String[] args) throws IOException {Socket socket new Socket(127.0.0.1, 20000);new Thread(new ClientTread(socket)).start();PrintStream ps new PrintStream(socket.getOutputStream());String line null;BufferedReader br new BufferedReader(new InputStreamReader(System.in));while ((line br.readLine()) ! null) {ps.println(line);}if (br ! null) br.close();if (socket ! null) socket.close();}
}
package login;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;public class ClientTread implements Runnable {private final Socket socket;BufferedReader br null;public ClientTread(Socket socket) throws IOException {this.socket socket;br new BufferedReader(new InputStreamReader(socket.getInputStream()));}public void run() {String content null;while (true) {try {if ((content br.readLine()) null) break;} catch (IOException e) {e.printStackTrace();e.getCause();}System.out.println(content);}}}
package socket;import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class Server {public static ListSocket socketList Collections.synchronizedList(new ArrayList());public static void main(String[] args) throws IOException {ListSocket socketList new ArrayList();ServerSocket serverSocket new ServerSocket(20000);try {while (true) {Socket socket1 serverSocket.accept();socketList.add(socket1);new Thread(new ServerThread(socket1)).start();}} catch (Exception e) {e.printStackTrace();socketList.removeAll(socketList);}
package socket;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;public class ServerThread implements Runnable {Socket socket null;BufferedReader br null;public ServerThread(Socket socket) throws Exception {this.socket socket;br new BufferedReader(new InputStreamReader(socket.getInputStream()));}public void run() {String content null;while ((content readFormClient()) ! null) {for (Socket socket : Server.socketList) {try {PrintStream ps new PrintStream(socket.getOutputStream());} catch (IOException e) {e.printStackTrace();e.getCause();}}}}private String readFormClient() {try {return br.readLine();} catch (IOException e) {Server.socketList.remove(socket);}return null;}
}