密码学基本概念
本文讲述密码学中的几个常见的概念:加密、解密、签名、验签、摘要、编码、公钥、私钥。 编码对信息进行编码,没有信息损失,任何人都能通过编码方式对信息进行解码。例如 ASCII 码,base64 编码。 例如下面是 ASCII 编码表: 摘要对信息计算摘要值,有信息损失,例如 md5 摘要,sha1 摘要。 加密对信息进行加密使其无法被监听者获知内容,没有信息损失。例如:AES、DES、RSA。 公钥公钥就是两个数字,e(e = 65537,e > 1 且与 ø(n) 互质,ø(n) 为欧拉函数),n(n = p * q,p、q 为质数),用于验签或加密。一般不说用公钥解密,说用公钥验签。例如 RSA 公钥。 私钥私钥就是两个数字,d(e 对于 ø(n) 的逆元,ø(n) 为欧拉函数)、n(n = p * q,p、q 为质数),用于签名或解密。一般不说用私钥加密,说用私钥签名。 公钥与私钥的关系在数学上没有区别,都是一对数字,取决于将哪一组数字公开。公钥加密的内容要使用私钥解密;私钥加密的内容要使用公钥解密。私钥要自己保护好,不得泄露;公钥...
盘点一下在渗透测试中可能用到的网络搜索引擎
▼ FoFa搜索引擎FOFA是白帽汇推出的一款网络空间搜索引擎,它通过进行网络空间测绘,能够帮助研究人员或者企业迅速进行网络资产匹配,例如进行漏洞影响范围分析、应用分布统计、应用流行度排名统计等。 搜索语法 |-|-||title=”abc”| 从标题中搜索abc。例:标题中有北京的网站。||header=”abc” |从http头中搜索abc。例:jboss服务器。||body=”abc” |从html正文中搜索abc。例:正文包含Hacked by。||domain=”qq.com”| 搜索根域名带有qq.com的网站。例: 根域名是qq.com的网站。||host=”.gov.cn” |从url中搜索.gov.cn,注意搜索要用host作为名称。||port=”443”| 查找对应443端口的资产。例: 查找对应443端口的资产。||ip=”1.1.1.1” |从ip中搜索包含1.1.1.1的网站,注意搜索要用ip作为名称。||protocol=”https” |搜索制定协议类型(在开启端...
使用 `kill -31` 隐藏进程的原理与实践
在 Unix/Linux 系统中,进程管理是系统操作的重要组成部分。通常,我们会使用 kill 命令来终止或控制进程。然而,使用 kill -31 命令可以实现一个特别的效果:隐藏进程。本文将探讨这一现象的原理,以及可能的应用场景。 什么是 kill -31?kill 命令用于发送信号到进程,信号是进程间通信的一种机制。-31 对应于 SIGUSR1 信号,这是一种用户定义的信号,通常用于特定的应用程序。具体来说,使用 kill -31 <进程ID> 可以发送 SIGUSR1 信号给指定的进程。 隐藏进程的原理1. 信号处理当进程接收到 SIGUSR1 信号时,它可以根据程序的设计采取不同的行动。某些程序可能会注册信号处理器来处理 SIGUSR1,并在接收到该信号时执行特定操作,如更新状态、改变行为或甚至隐藏自己。 2. 进程状态的改变进程在接收到这个信号后,可以通过改变其状态或行为来实现“隐藏”效果。例如: 更改进程名称:某些程序可能会在接收到信号后更改其名称,使其在 top 和 ps 命令中不易被识别。 修改进程的优先级:进程可以降低自身的优先级...
「连载二」Go 语言基础类型
Go 语言基础数据类型及复合类型学习Go 语言是一种强类型语言,提供了多种基本数据类型和复合数据类型。这些数据类型构成了 Go 编程的基础,理解它们对于编写高效、可读的代码至关重要。本文将介绍 Go 语言的基本数据类型及复合类型,并提供示例代码。 1. 基础数据类型1.1 布尔类型布尔类型用于表示真(true)或假(false)的值。 示例package mainimport "fmt"func main() { var isActive bool = true fmt.Println("Is Active:", isActive) // 输出: Is Active: true} 1.2 整型Go 语言提供了多种整型,包括: int8:8 位带符号整型 byte:8 位无符号整型(uint8的别名) int16:16 位带符号整型 int:平台相关的整型,通常为 32 位或 64 位 uint:无符号整型,通常为 32 位或 64 位 uintptr:无符号整型,用于存储指针 示例package...
MySQL 中的 `SQL_CALC_FOUND_ROWS` 技术详解
在进行数据库查询时,特别是涉及分页(pagination)操作时,如何高效地获取总记录数是一个常见挑战。MySQL 提供了 SQL_CALC_FOUND_ROWS 选项,以便在执行查询时同时获取符合条件的总行数。本文将深入探讨 SQL_CALC_FOUND_ROWS 的用法、优缺点以及最佳实践。 什么是 SQL_CALC_FOUND_ROWS?SQL_CALC_FOUND_ROWS 是一个 MySQL 查询选项,用于在执行 SELECT 查询时计算符合条件的总行数,而不考虑 LIMIT 限制。通过这种方式,开发者可以在获取当前页数据的同时,得到符合条件的所有记录的总数。 语法使用 SQL_CALC_FOUND_ROWS 的基本语法如下: SELECT SQL_CALC_FOUND_ROWS column1, column2FROM table_nameWHERE conditionLIMIT offset, row_count; 在执行上述查询后,可以使用以下语句获取总行数: SELECT FOUND_ROWS(); 示例假设我们有一个名为 employees 的表,包含...
「连载一」Go 介绍与环境安装
在现代软件开发中,Go(又称 Golang)是一种越来越受欢迎的编程语言,以其简洁、高效和并发特性而著称。本篇博客将介绍 Go 的基本概念,并提供在 Windows、CentOS 和 macOS 系统上的安装步骤。 什么是 Go?Go 是 Google 于 2007 年推出的一种开源编程语言,主要用于构建高性能的网络服务和分布式系统。Go 的主要特点包括: 简洁的语法:易于学习和使用。 并发支持:通过 Goroutines 和 Channels 实现高效的并发编程。 强类型系统:提供静态类型检查,有助于减少运行时错误。 跨平台编译:可以轻松地编译为不同平台的二进制文件。 Go 的安装以下是 Go 在不同操作系统上的安装步骤。 1. Windows 系统步骤 1:下载 Go 安装包访问 Go 官方下载页面 下载适用于 Windows 的安装程序(.msi 文件)。 步骤 2:安装 Go 双击下载的 .msi 文件,按照安装向导的指示完成安装。 安装完成后,Go 默认将安装到 C:\Go 目录。 步骤 3:配置环境变量 右键点击“此电脑”或“计算机”,选择“属性”。 点击...
JavaScript 将时间戳字符串转换为可读日期格式
在现代应用中,我们经常需要处理时间戳,尤其是在与后端交互时。时间戳通常以毫秒为单位表示自1970年1月1日以来的时间。这篇博客将介绍如何将时间戳字符串(如 "1727848833248")转换为可读的日期格式,并展示相关的 JavaScript 代码示例。 什么是时间戳?时间戳是一个数字,表示自1970年1月1日(UTC)以来的毫秒数。在 JavaScript 中,时间戳通常用于表示日期和时间。我们可以使用 Date 对象将时间戳转换为人类可读的日期格式。 从时间戳字符串到日期对象假设我们有一个时间戳字符串: const timestampStr = "1727848833248"; 我们的目标是将这个字符串转换为可读的日期格式。以下是实现这个目标的步骤。 步骤 1:将字符串转换为数字首先,我们需要将时间戳字符串转换为数字,以便可以创建 Date 对象: const timestamp = Number(timestampStr); 步骤 2:创建 Date 对象使用转换后的时间戳创建一个 Date 对象: const date =...
IPv4 和 IPv6 地址转换为整数类型
在 PHP 中,将 IPv4 和 IPv6 地址转换为整数类型可以使用不同的方法。以下是如何实现这些转换的示例。 IPv4 转换为整数对于 IPv4 地址,可以使用 ip2long() 函数将其转换为整数。 function ipv4ToInt($ipv4) { $result = ip2long($ipv4); if ($result === false) { throw new InvalidArgumentException("Invalid IPv4 address."); } return $result;}// 示例$ipv4 = "192.168.1.1";$intIPv4 = ipv4ToInt($ipv4);echo "IPv4: $ipv4 -> Integer: $intIPv4\n"; // 输出: IPv4: 192.168.1.1 -> Integer: 3232235777 IPv6 转换为整数...
DNF 和 Yum 的区别,为什么 Yum 会被 DNF 取代?
DNF 和 Yum 的区别,为什么 Yum 会被 DNF 取代?作者: Magesh Maruthamuthu 译者: LCTT Xingyu.Wang 由于 Yum 中许多长期存在的问题仍未得到解决,因此 Yum 包管理器已被 DNF 包管理器取代。这些问题包括性能差、内存占用过多、依赖解析速度变慢等。 DNF 使用 libsolv 进行依赖解析,由 SUSE 开发和维护,旨在提高性能。 Yum 主要是用 Python 编写的,它有自己的应对依赖解析的方法。它的 API 没有完整的文档,它的扩展系统只允许 Python 插件。 Yum 是 RPM 的前端工具,它管理依赖关系和资源库,然后使用 RPM 来安装、下载和删除包。 为什么他们要建立一个新的工具,而不是修复现有的问题呢? Ales Kozamblak 解释说,这个修复在技术上是不可行的,而且 Yum 团队还没有准备好立即接受修改。 另外,最大的挑战是,Yum 有 56000 行代码,但 DNF 只有 29000 行代码。 所以除了分叉,没有办法解决。 不过 Yum 的运行情况还算可以。 |< 如显示不全,请左...
[转载] 5.7停服倒计时!关于MySQL升级到8.0版本的一些经验
原文地址 : https://dbaplus.cn/news-11-5623-1.html 一、如何看待MySQL版本升级关于数据库版本升级,一直都是热议话题,对于升级的缘由各家也有所不同,有业务驱动的,有DBA自发驱动的,有规划导向也有方向指引的……抛开各种原因,当升级这个决定落下来的时候,对于DBA手头的几百几千套数据库来说,就好比是一场动物大迁徙,满满的画面感。 从Oracle发布的版本生命周期规划可以看到,MySQL5.7已经走到了生命周期的终点,意味着后续将不再为 MySQL 5.7 提供官方更新、错误修复或安全补丁。 阿里云和AWS都在官方公布了版本支持计划,MySQL 5.7版本已经开始了倒计时。 而要想让这件事情获得研发同学的大力支持,就需要平滑升级或者最低成本的改动。所以对于这场迁移的基本要求,我在心里默默对自己提了要求:零故障,平滑升级。 (一)行业内的MySQL版本数据情况我在2022年底左右调研了下行业内的一些公司的MySQL数据库版本情况,列表如下: 可以看到大部分的公司还是在MySQL 5.7这个版本,而且从服务规模来看,越是规模大的公司,要...











