当前位置: 首页 > news >正文

4.17-4.18学习总结

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 name,int 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 List<Socket> socketList = Collections.synchronizedList(new ArrayList<>());public static void main(String[] args) throws IOException {List<Socket> 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;}
}

 

 

 

相关文章:

4.17-4.18学习总结

MD5 MD5: 1、压缩性 2、容易计算 3、抗修改性 4、弱抗碰撞 5、强抗碰撞 为什么需要MD5&#xff1f; 存储一些敏感信息的时候&#xff0c;如果不进行加密会出现安全问题。 例如&#xff1a;系统登录的密码&#xff0c;如果数据库中的密码采用明文&#xff0c;一旦数据库泄…...

Spring事务

事务作用&#xff1a; 事务作用&#xff1a;在数据层保障一系列的数据库操作同成功同失败Spring事务作用&#xff1a;在数据层或 业务层 保障一系列的数据库操作同成功同失败 Spring为了管理事务&#xff0c;提供了一个平台事务管理器PlatformTransactionManager commit是用来提…...

Linux新的设备或分区挂载到系统中mount使用方法

如果想将一个新的设备或分区挂载到系统中&#xff0c;可以按照以下步骤进行操作&#xff1a; 确定要挂载的设备或分区的设备名&#xff0c;例如 /dev/sdb1。 创建挂载点&#xff0c;可以在任何目录下创建一个新目录作为挂载点&#xff0c;例如 /mnt/mydevice。 sudo mkdir /mn…...

移动硬盘损坏如何恢复数据

移动硬盘一种小巧便携的存储介质&#xff0c;可用于各电脑之间交换大容量数据&#xff0c;可以随时插拔&#xff0c;进行高速传输数据。但有好也有坏&#xff0c;在我们使用中也会出现一些移动硬盘损坏故障&#xff0c;比如说提示格式化、硬盘分区丢失、误格式化、文件误删除等…...

Material Design:为你的 Android 应用提供精美的 UI 体验

Material Design&#xff1a;为你的 Android 应用提供精美的 UI 体验 介绍 Material Design 概念&#xff1a;介绍 Material Design 是 Google 推出的一种设计语言&#xff0c;用于创建现代、美观、直观且一致的用户界面。解释 Material Design 的基本原则&#xff0c;包括材料…...

springboot+vue学生毕业离校系统(源码+说明文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的学生毕业离校系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风…...

【Android入门到项目实战-- 6.2】—— 如何访问其他应用程序的数据?

目录 一、ContentResolver基本用法 如何查询&#xff1f; 如何向表中添加一条数据&#xff1f; 如何更新这条新添加的数据&#xff1f; 如何删除这条数据&#xff1f; 二、读取系统联系人 要想你的APP访问其他应用程序的数据&#xff0c;需要使用内容提供器&#xff0c;下面使…...

【100个 Unity实用技能】 | InputField输入框组件实现输入限制,只能输入中文或特殊字符等

&#x1f3ac; 博客主页&#xff1a;https://xiaoy.blog.csdn.net &#x1f3a5; 本文由 呆呆敲代码的小Y 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;Unity系统学习专栏 &#x1f332; 游戏制作专栏推荐&#xff1a;游戏制作 &…...

倍数+路径之谜

倍数 :用户登录https://www.lanqiao.cn/problems/583/learning/?page5&first_category_id1&sortstudents_count 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 请问在 1 到 2020 中&#xff0c;有多少个…...

【Unity渲染】URP透明物体自身渲染穿插异常问题

背景&#xff1a; 对于URP中的某个物体&#xff0c;我们如果希望他正反面都可以被渲染。 通常会有两种解决方案&#xff1a; 1.将网格设置为双面网格。&#xff08;此种情况Mesh.RecalculateNormals计算结果可能会异常&#xff0c;解决可参考网格法线生成异常解决&#xff0…...

c/c++:指针,指针定义和使用,指针大小4字节,野指针,空指针*p=NULL

c/c:指针&#xff0c;指针定义和使用&#xff0c;指针大小4字节&#xff0c;野指针&#xff0c;空指针*pNULL 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;此时学会c的话&#xff0c; 我所知道的周边的会c的同学&#xf…...

CAS实现原⼦操作的三⼤问题,该如何解决?

目录 1、ABA问题 2.循环时间长开销大 3、只能保证一个共享变量的原子操作 总结&#xff1a; CAS&#xff08;Compare-and-Swap&#xff09;是一种用于实现原子操作的技术&#xff0c;但是它存在着三个主要的问题&#xff1a;ABA问题、循环时间长开销大、只能保证一个共享变…...

Linux Shell 实现一键部署二进制go+caddy+filebrowser

filebrowser filebrowser 是一个使用go语言编写的软件&#xff0c;功能是可以通过浏览器对服务器上的文件进行管理。可以是修改文件&#xff0c;或者是添加删除文件&#xff0c;甚至可以分享文件&#xff0c;是一个很棒的文件管理器&#xff0c;你甚至可以当成一个网盘来使用。…...

无人机巡检智能一体化解决方案

随着无人机技术的不断发展&#xff0c;无人机应用领域已经越来越生活化&#xff0c;其产品不仅在军事、商业等领域得到了广泛应用&#xff0c;也在普通人的生活中得到了广泛应用。无人机的自动巡检是无人机应用的一个重要方向&#xff0c;具有广阔的发展前景&#xff0c;本文将…...

2023-2029全球粘结剂喷射技术行业调研及趋势分析报告

2022年全球粘结剂喷射技术市场规模约5.8亿元&#xff0c;2018-2022年年复合增长率CAGR约为 %&#xff0c;预计未来将持续保持平稳增长的态势&#xff0c;到2029年市场规模将接近12亿元&#xff0c;未来六年CAGR为11.3%。 本文调研和分析全球粘结剂喷射技术发展现状及未来趋势&a…...

Python每日一练(20230420)

目录 1. 数组逐位判断 &#x1f31f; 2. 交错字符串 &#x1f31f;&#x1f31f; 3. 二进制求和 &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 数组逐位判断 比如…...

【社区图书馆】读《悲惨世界》有感

文章目录 故事简介经典重现价值取向我的思想 故事简介 《悲惨世界》是一部充满了悲剧的小说&#xff0c;故事首先由教堂展开&#xff0c;然后主要围绕着主人公冉阿让进行一系列的生动形象的描写&#xff0c;讲述了冉阿让悲惨的一生。 主人公冉阿让是一个诚实、善良的工人&…...

随机蛙跳算法 (SFLA)简单实现(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 随着计算机科学与技术的迅速发展,人类生存空间的扩大以及认识与改造世界范围的拓宽,人们对科学技术提出了新的和更高的要求,其…...

【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令

【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令 目录 【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令 一、上讲回顾 二、ROS2核心命令讲解 1、daemon-各种守护进程相关的子命令 2、node-各种节点进程相关的子命令 3、pkg-各种包进程相关的子命令 4、run运行特定软…...

如何训练个人的ChatGpt4

如何在自己的计算机上安装类似 ChatGPT 的个人 AI 并在没有互联网的情况下运行它 个人 AI 的“第一台 PC”时刻 这是个人AI的“第一台PC”时刻&#xff0c;随之而来的是限制&#xff0c;就像在车库里生产第一台Apple 1一样。你是先驱。今天&#xff0c;任何人都可以使用私人和…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...