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

简介: 本文涵盖四大类核心技术知识。加密算法部分介绍了对称加密(如 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. 回溯算法:记录每步状态,尝试失败时回溯至之前状态换方法尝试,常结合递归(递归
相关文章
|
5月前
|
机器学习/深度学习 算法 安全
【无人机三维路径规划】基于非支配排序的鲸鱼优化算法NSWOA与多目标螳螂搜索算法MOMSA求解无人机三维路径规划研究(Matlab代码实现)
【无人机三维路径规划】基于非支配排序的鲸鱼优化算法NSWOA与多目标螳螂搜索算法MOMSA求解无人机三维路径规划研究(Matlab代码实现)
316 5
|
5月前
|
机器学习/深度学习 算法 安全
【无人机三维路径规划】多目标螳螂搜索算法MOMSA与非支配排序的鲸鱼优化算法NSWOA求解无人机三维路径规划研究(Matlab代码实现)
【无人机三维路径规划】多目标螳螂搜索算法MOMSA与非支配排序的鲸鱼优化算法NSWOA求解无人机三维路径规划研究(Matlab代码实现)
227 0
|
4月前
|
算法 数据可视化 测试技术
HNSW算法实战:用分层图索引替换k-NN暴力搜索
HNSW是一种高效向量检索算法,通过分层图结构实现近似最近邻的对数时间搜索,显著降低查询延迟。相比暴力搜索,它在保持高召回率的同时,将性能提升数十倍,广泛应用于大规模RAG系统。
424 10
HNSW算法实战:用分层图索引替换k-NN暴力搜索
|
5月前
|
存储 算法 数据可视化
基于禁忌搜索算法的TSP问题最优路径搜索matlab仿真
本程序基于禁忌搜索算法解决旅行商问题(TSP),旨在寻找访问多个城市的最短路径。使用 MATLAB 2022A 编写,包含城市坐标生成、路径优化及结果可视化功能。通过禁忌列表、禁忌长度与藐视准则等机制,提升搜索效率与解的质量,适用于物流配送、路径规划等场景。
|
6月前
|
机器学习/深度学习 并行计算 算法
MATLAB实现利用禁忌搜索算法解决基站选址问题
MATLAB实现利用禁忌搜索算法解决基站选址问题
210 0
|
12月前
|
云安全 安全 数据建模
《数字证书:互联网世界的"身份证"与"防盗门"》 ——揭秘网络安全背后的加密江湖
在2023年某深夜,上海陆家嘴金融公司机房遭遇黑客攻击,神秘青铜大门与九大掌门封印的玉牌突现,阻止了入侵。此门象征数字证书,保障网络安全。数字证书如验钞机识别假币,保护用户数据。它通过SSL/TLS加密、CA认证和非对称加密,构建安全通信。证书分为DV、OV、EV三类,分别适合不同场景。忽视证书安全可能导致巨额损失。阿里云提供一站式证书服务,助力企业部署SSL证书,迎接未来量子计算和物联网挑战。
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
278 10