加密算法、排序算法、字符串处理及搜索算法详解

简介: 本文涵盖四大类核心技术知识。加密算法部分介绍了对称加密(如 AES)、非对称加密(如 RSA)、哈希摘要(如 SHA-2)、签名算法的特点及密码存储方案(加盐、BCrypt 等)。排序算法部分分类讲解了比较排序(冒泡、选择、插入、归并、快排、堆排序)和非比较排序(计数、桶、基数排序)的时间复杂度、适用场景及实现思路,强调混合排序的工业应用。字符串处理部分包括字符串反转的双指针法,及项目中用正则进行表单校验、网页爬取、日志处理的实例。搜索算法部分详解了二分查找的实现(双指针与中间索引计算)和回溯算法的概念(递归 + 剪枝),以 N 皇后问题为例说明回溯应用。内容全面覆盖算法原理与实践

一、加密算法

  1. 加密算法分类及常见类型:加密算法主要分为对称加密、非对称加密、哈希摘要、电子签名和密码存储几类。对称加密有 DES、AES(国家标准 SM4);非对称加密有 RSA、ECDSA(国家标准 SM2);哈希摘要有 MD5、SHA-2、SHA-3(国家标准 SM3);电子签名常结合 RSA、ECDSA 和哈希摘要,或用 HMAC;密码存储可采用哈希摘要加盐、多次迭代哈希、BCrypt 等。
  2. 对称加密、非对称加密、哈希摘要的区别
  • 对称加密:加密和解密用同一个密钥,需妥善保管,加解密速度快。
  • 非对称加密:密钥分公钥(加密)和私钥(解密),私钥保管,公钥可公开;双向通信需双方各有一对密钥(用对方公钥加密,自己私钥解密),加解密速度较慢。
  • 哈希摘要:提取原始数据特征,可用于完整性校验(如不同数据的摘要不同),比如用 “张三,男,30 岁” 等特征描述张三,特征不符则数据不同。
  1. 签名算法:电子签名用于防止数据篡改。单纯摘要易被篡改(坏人可重新计算摘要),解决方法是发送者用自己的私钥对摘要签名,接收者用发送者的公钥验签。验签和加密用对方公钥,签名和解密用自己私钥,确保只有发送者能签名,接收者可验证。
  2. 项目中密码存储方式:明文和单纯 MD5、SHA-2 存储不可行(简单密码易被彩虹表攻击)。通常采用:提示用户设置强密码;或对简单密码加盐(增加复杂度)、多次迭代哈希,或用 BCrypt(自动加盐和多次哈希),增加破解难度。

二、排序算法

  1. 排序算法分类及特点:排序算法分基于比较的排序(如快排、归并、堆排序、插入排序等)和非比较排序(如计数、桶、基数排序)。比较排序中,快排、归并、堆排序平均时间复杂度为 O (n・log n),插入排序在数据量小或有序度高时适用;非比较排序(计数、桶、基数)可达到 O (n),但受数据范围、位数影响。工业级排序多为混合算法(如 Java 的排序结合插入、归并、快排)。
  2. 常见排序算法的时间复杂度及特性
  • 比较排序:冒泡、选择、插入排序平均 O (n²);归并、快排、堆排序平均 O (n・log n)。其中,冒泡、插入稳定,选择、快排、堆排序不稳定;归并空间复杂度 O (n),快排递归栈空间 O (log n)。
  • 非比较排序:计数排序 O (n+r)(r 为数据范围),桶排序 O (n)(桶数接近 n 时),基数排序 O (n・w)(w 为数字位数)。
  1. 具体排序算法实现思路
  • 冒泡排序:分已排序和未排序区,每轮从左到右比较相邻元素,逆序则交换,最大元素移至已排序区,优化可记录最后交换位置减少轮数。
  • 选择排序:分已排序和未排序区,每轮选未排序区最大元素交换至已排序区,交换次数少但不稳定。
  • 插入排序:分已排序和未排序区,每次取未排序区最左元素,与已排序区元素从右向左比较,插入合适位置,适合小数据或有序数据。
  • 归并排序:分治思想,将数组不断二分至小数组,排序后两两合并,稳定且时间复杂度稳定 O (n・log n)。
  • 快速排序:分治思想,选基准点,将比基准点小的放左、大的放右,递归分区,平均效率高但分区不均时退化至 O (n²)。
  • 堆排序:建大顶堆,将堆顶(最大元素)交换至数组尾部,调整堆后重复,时间复杂度 O (n・log n),但可能因缓存未命中影响效率。

三、字符串类

  1. 字符串反转:基于双指针,i 指向起始,j 指向结束,交换 i、j 元素后 i 后移、j 前移,直至相遇(如 LeetCode 344 题),可扩展至反转单词(LeetCode 151 题)。
  2. 项目中字符串匹配技术的应用:常用正则表达式,如:
  • 表单校验:手机号校验用/^1\d{10}$/(1 开头,后 10 位数字)。
  • 网页爬取:提取图片链接,正则/<img src=(['"])(.+?)\1(.*?)>/g匹配 src 属性值。
  • 日志处理:提取请求方法日志处理:提取请求方法、路径等,正则/\[.*?\] - (\w+) (\/\S+) (\d{3}) (\w+)/g分组匹配。

四、搜索类

  1. 二分查找:在有序数组中,用双指针 i(起始)、j(结束),计算中间索引 m,比较目标与 a [m],调整 i 或 j,直至找到目标(时间复杂度 O (log n))。
  2. 回溯算法:记录每步状态,尝试失败时回溯至之前状态换方法尝试,常结合递归(递归
相关文章
|
2天前
|
机器学习/深度学习 算法 安全
【无人机三维路径规划】基于非支配排序的鲸鱼优化算法NSWOA与多目标螳螂搜索算法MOMSA求解无人机三维路径规划研究(Matlab代码实现)
【无人机三维路径规划】基于非支配排序的鲸鱼优化算法NSWOA与多目标螳螂搜索算法MOMSA求解无人机三维路径规划研究(Matlab代码实现)
|
4天前
|
机器学习/深度学习 算法 安全
【无人机三维路径规划】多目标螳螂搜索算法MOMSA与非支配排序的鲸鱼优化算法NSWOA求解无人机三维路径规划研究(Matlab代码实现)
【无人机三维路径规划】多目标螳螂搜索算法MOMSA与非支配排序的鲸鱼优化算法NSWOA求解无人机三维路径规划研究(Matlab代码实现)
|
23天前
|
机器学习/深度学习 算法 文件存储
神经架构搜索NAS详解:三种核心算法原理与Python实战代码
神经架构搜索(NAS)正被广泛应用于大模型及语言/视觉模型设计,如LangVision-LoRA-NAS、Jet-Nemotron等。本文回顾NAS核心技术,解析其自动化设计原理,探讨强化学习、进化算法与梯度方法的应用与差异,揭示NAS在大模型时代的潜力与挑战。
212 6
神经架构搜索NAS详解:三种核心算法原理与Python实战代码
|
5天前
|
存储 算法 数据可视化
基于禁忌搜索算法的TSP问题最优路径搜索matlab仿真
本程序基于禁忌搜索算法解决旅行商问题(TSP),旨在寻找访问多个城市的最短路径。使用 MATLAB 2022A 编写,包含城市坐标生成、路径优化及结果可视化功能。通过禁忌列表、禁忌长度与藐视准则等机制,提升搜索效率与解的质量,适用于物流配送、路径规划等场景。
|
1月前
|
机器学习/深度学习 并行计算 算法
MATLAB实现利用禁忌搜索算法解决基站选址问题
MATLAB实现利用禁忌搜索算法解决基站选址问题
54 0
|
2天前
|
机器学习/深度学习 算法 调度
基于NSGA-III算法求解微电网多目标优化调度研究(Matlab代码实现)
基于NSGA-III算法求解微电网多目标优化调度研究(Matlab代码实现)
|
3天前
|
机器学习/深度学习 运维 算法
基于非支配排序遗传算法NSGAII的综合能源优化调度(Matlab代码实现)
基于非支配排序遗传算法NSGAII的综合能源优化调度(Matlab代码实现)
基于非支配排序遗传算法NSGAII的综合能源优化调度(Matlab代码实现)
|
4天前
|
机器学习/深度学习 并行计算 算法
【超级棒的算法改进】融合鱼鹰和柯西变异的麻雀优化算法研究(Matlab代码实现)
【超级棒的算法改进】融合鱼鹰和柯西变异的麻雀优化算法研究(Matlab代码实现)
|
2天前
|
负载均衡 算法 调度
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
50 11
|
2天前
|
机器学习/深度学习 传感器 算法
基于全局路径的无人地面车辆的横向避让路径规划研究[蚂蚁算法求解](Matlab代码实现)
基于全局路径的无人地面车辆的横向避让路径规划研究[蚂蚁算法求解](Matlab代码实现)

热门文章

最新文章