分类目录归档:技术文献

怎么自己找 BitLocker 密钥(恢复密钥)

在使用 Windows 的过程中,很多用户都会遇到 BitLocker 要求输入恢复密钥 的情况。
例如:重装系统、主板更换、BIOS 设置变更、系统异常启动等。

如果你提前了解并备份了 BitLocker 密钥,大多数情况都是可以自行解决的


一、什么是 BitLocker 恢复密钥

BitLocker 是 Windows 自带的磁盘加密功能,用来保护数据安全。
当系统检测到环境发生变化,或无法确认设备安全状态时,就会要求输入 48 位的 BitLocker 恢复密钥

⚠️ 没有恢复密钥,数据基本无法找回。


二、通过微软官方账户找回 BitLocker 密钥(最常见)

如果你在开启 BitLocker 时使用的是 微软账户登录的 Windows,系统通常会自动把恢复密钥上传到微软账户

官方入口(微软提供)

👉 打开以下页面登录你的微软账户:
https://account.microsoft.com/devices/recoverykey

登录后,你可以看到类似信息:

  • 设备名称
  • 恢复密钥 ID
  • 48 位 BitLocker 恢复密钥

只要找到和当前设备匹配的那一条,输入即可解锁。

✅ 这是最安全、最可靠的找回方式。


三、在本地找 BitLocker 密钥(如果你曾手动备份过)

开启 BitLocker 时,Windows 通常会提示你选择备份方式,常见包括:

  • 保存到文件(.txt
  • 打印恢复密钥
  • 保存到 U 盘
  • 保存到微软账户

你可以重点检查:

  • 常用的 U 盘
  • 以前备份资料的硬盘
  • 文档、桌面、下载目录
  • 云盘(OneDrive、NAS 等)

文件名一般类似:
BitLocker Recovery Key xxxx-xxxx.txt


四、公司 / 单位电脑的情况

如果这台电脑属于:

  • 公司设备
  • 学校设备
  • 域环境(AD / Azure AD)

那么 BitLocker 密钥很可能被管理员统一保存,你需要联系:

  • IT 管理员
  • 网络管理员
  • 技术支持部门

自己是无法从本地强行导出的。


五、一定要提前备份好自己的 BitLocker 密钥

强烈建议你在 系统正常时 主动检查和备份一次:

查看是否已开启 BitLocker

  • 控制面板 → BitLocker 驱动器加密

立即做的三件事

  • ✅ 确认微软账户中能看到恢复密钥
  • ✅ 本地保存一份(U 盘 / 硬盘)
  • ✅ 不要只保存一处

📌 备份 ≠ 截图一次就完事


六、有密钥但仍然无法解锁?是可以处理的

很多人以为:

“有密钥但进不去 = 数据完了”

实际上并不完全是。

“密钥正确,但仍无法解锁” 的情况下,常见原因包括:

  • 分区表异常
  • 启动方式(UEFI / Legacy)变化
  • 磁盘标识损坏
  • 系统引导问题

这些情况中,在不破坏数据的前提下是有处理空间的,比如:

  • 使用 WinPE / 原版安装环境修复
  • 手动解锁分区后备份数据
  • 修复 BCD / 分区信息

⚠️ 但前提仍然是:你必须有正确的 BitLocker 恢复密钥


七、总结

  • BitLocker 并不是“无解”的东西
  • 微软账户是找回密钥的第一入口
  • 提前备份密钥非常重要
  • 有密钥的情况下,大多数问题都是可以处理的

如果你现在能看到这篇文章,建议你立刻花 2 分钟检查一次自己的 BitLocker 密钥是否已经安全备份。

这一步,真的能救命。

IPv6:互联网的未来之路

IPv6:互联网的未来之路

互联网在过去几十年里飞速发展,而 IP 地址作为网络的“身份证”,也经历了从 IPv4 到 IPv6 的演进。随着设备数量的激增,IPv4 地址已经几近枯竭,IPv6 成为了解决网络扩展问题的关键技术。本文将从 IPv6 的基本概念、特点、优势以及实际应用角度,带你深入了解这一互联网基础协议。

什么是 IPv6?

IPv6(Internet Protocol version 6)是互联网协议的第六版,用于替代现有的 IPv4。IPv4 使用 32 位地址,理论上支持约 43 亿个地址,但随着智能手机、物联网设备和云服务的普及,这些地址已经不足以满足需求。IPv6 使用 128 位地址,理论上可以提供 3.4×1038 个独一无二的地址,几乎可以为每颗沙子分配一个 IP 地址,彻底解决地址不足的问题。

IPv6 地址通常表示为 8 组 16 位的十六进制数,每组之间用冒号分隔,例如:

为了简化书写,连续的零可以用双冒号 :: 表示:

IPv6 的核心特点

  • 海量地址空间:IPv6 的 128 位地址设计,为未来几十年甚至上百年的互联网发展提供充足的地址储备。
  • 自动配置(Stateless Address Autoconfiguration):IPv6 支持设备自我配置 IP 地址,无需手动设置或依赖 DHCP,适合大规模网络部署。
  • 内置安全性:IPv6 协议内置了 IPsec 支持,用于数据加密和身份验证,为网络通信提供更高安全保障。
  • 简化的报文结构:IPv6 头部比 IPv4 更简洁,有助于提升路由效率和处理速度。
  • 支持多播和任播:IPv6 提供更灵活的组播和任播能力,减少网络带宽浪费,提高数据传输效率。

IPv6 与 IPv4 的区别

特性 IPv4 IPv6
地址长度 32 位 128 位
地址数量 约 43 亿 3.4×1038
配置方式 手动或 DHCP 自动配置或 DHCPv6
安全性 依赖额外协议 内置 IPsec
数据包头部 复杂,20 字节 简化,40 字节

IPv6 在实际应用中的优势

  • 物联网设备的大规模接入:随着智能家居、工业传感器等设备普及,每台设备都需要唯一的 IP,IPv6 解决了这一瓶颈。
  • 移动互联网优化:IPv6 支持无状态自动配置和移动 IP,移动设备在不同网络间切换时更加高效。
  • 提升网络性能:简化的报文头部和更高效的路由机制,有助于减少延迟,提升网络传输速度。
  • 增强网络安全:内置 IPsec 支持,为数据传输提供端到端的加密保障,降低中间人攻击风险。

IPv6 部署现状与未来趋势

目前,全球 IPv6 部署正在稳步推进,尤其是在美国、欧洲和亚洲部分地区。大型互联网公司如 Google、Facebook、Cloudflare 等已经全面支持 IPv6。随着 5G 和物联网的发展,IPv6 将成为互联网通信的主流标准。

对于个人用户,开启 IPv6 可以获得更快的网络连接、更稳定的访问体验,同时减少 NAT 带来的限制。很多宽带运营商也在逐步推送 IPv6 网络,支持双栈(IPv4 + IPv6)模式,实现平滑过渡。

总结

IPv6 不仅是解决 IP 地址枯竭的方案,更是未来网络发展的基石。它为大规模设备接入、移动互联网、物联网以及安全通信提供了技术保障。无论是企业网络架构师,还是普通互联网用户,了解和部署 IPv6 都将带来长远的好处。

曾经被取消,现在又卷土重来!AVX-512到底有何魅力?

7月25日,英特尔发布了新的 APX(高级性能扩展),同时还披露了新的 AVX10,它将首次为 P 核和 E 核提供统一的 AVX-512 功能支持。也标志着被英特尔在12、13代酷睿中枪毙的AVX 指令集运算功能回归。AVX-512为何能卷土重来?

不得不提的ALU
在了解 AVX-512 指令集之前,有必要先了解一下 ALU 的工作原理。

顾名思义,算术处理单元用于执行数学计算任务。这些任务包括加法、乘法和浮点计算等运算。为了完成这些任务,ALU 使用由 CPU 时钟信号驱动的特定应用数字电路。

因此,CPU 的主频就决定了 ALU 处理指令的速度。因此,如果 CPU 的时钟频率为 5GHz,那么 ALU 在一秒钟内可以处理 50 亿条指令。因此,CPU 的性能会随着时钟频率的提高而提高,但CPU 产生的热量也会增加。

那么,新一代处理器如何提供比旧版处理器更好的性能呢?人们开始利用并行概念来提高性能。这种并行性可以通过使用多核架构来实现,即使用多个不同的处理内核来提高 CPU 的计算能力。

另一种提高性能的方法是使用 SIMD 指令集。简单地说,“单指令、多数据”的指令方式,可以让 ALU 在不同的数据点上执行相同的指令。这种并行方式可以提高 CPU 的性能,AVX-512 就是一种 SIMD 指令,用于提高 CPU 在执行特定任务时的性能。

什么是 AVX-512,它如何工作?
AVX 512 指令集是 AVX 的第二次迭代,于 2013 年进入英特尔处理器。作为高级矢量扩展(Advanced Vector Extensions)的缩写,AVX指令集最早出现在英特尔至强Phi(Knights Landing)架构中,后来在英特尔服务器处理器Skylake-X CPU中使用。

此外,AVX-512 指令集通过 Cannon Lake 架构进入基于消费类的CPU,后来又得到 Ice Lake 和 Tiger Lake 架构的支持。

该指令集的主要目标是加速涉及数据压缩、图像处理和加密计算的任务。AVX-512 指令集的计算能力是旧版指令集的两倍,性能大幅提升。

那么,英特尔是如何将使用 AVX-512 架构的 CPU 性能提高一倍的呢?

如前所述,ALU 只能访问 CPU 寄存器中的数据。高级矢量扩展指令集增加了这些寄存器的大小。

由于寄存器容量的增加,ALU 可以在一条指令中处理多个数据点,从而提高了系统性能。

就寄存器大小而言,AVX-512 指令集提供 32 个 512 位寄存器,与旧版 AVX 指令集相比增加了一倍。

因此,只需执行一条指令,就可以同时进行多项操作,而不必以标量方式(即逐个数据)进行操作。例如,可以同时对 8 个 64 位数据或 16 个 32 位数据进行操作,等等。

英特尔为什么要终止 AVX-512?
如前所述,AVX-512 指令集具有多项计算优势。事实上,像 TensorFlow 这样的流行AI开发库都使用了该指令集,以便在支持该指令集的 CPU 上提供更快的计算速度。

而对于浮点运算极度依赖的加密解密计算、文件压缩和解压缩、音频视频编码解码以及复杂的3D渲染来说,AVX-512的性能提升是比较大的。也就是说,对生产力用户来说,只要软件支持,那么AVX-512对性能提升是很明显的。

即使是对于3A大作,由于复杂的3D和AI计算,这种并行指令集对帧率的提升也是有帮助的。而诸如游戏主机模拟器等虚拟化计算场合,其意义也非常大。

那么,英特尔为什么要在最近的12、13代酷睿处理器上禁用 AVX-512呢?

因为这两代处理器与英特尔生产的旧处理器不同。旧系统使用的是运行在同一架构上的内核,而这两代酷睿处理器使用的是两个不同的内核,也就是异构运算技术。Alder Lake 处理器中的这些内核被称为 P 核和 E 核,采用不同的架构。

P 核心使用 Golden Cove 微架构,而 E 核心使用 Gracemont 微架构。当特定指令能在一种架构上运行而不能在另一种架构上运行时,这种架构上的差异就会妨碍调度程序的正常运行。

在 Alder Lake 处理器中,AVX-512 指令集就是这样一个例子,因为 P 核心拥有处理该指令的硬件,而 E 核心却没有。

因此,Alder Lake 处理器不支持 AVX-512 指令集。

尽管如此,AVX-512 指令仍可在某些英特尔未将其物理融合的 Alder Lake CPU 上运行。要做到这一点,用户必须在 BIOS 中禁用 E 核。

相反,由于采用非异构运算结构,AMD在Ryzen7000 CPU上,反而支持起了AVX-512,似乎也是一种小小的讽刺。

AVX10如何恢复AVX-512支持?
新的 AVX10 ISA 并不支持英特尔当前一代的 CPU,但它使英特尔同时拥有 E 核和 P 核的芯片仍然支持 AVX-512,尽管 512 位指令只能在 P 核上运行。同时,融合的 256 位 AVX10 指令可以在 P 核或 E 核上运行,从而使整个芯片仍然支持 AVX-512 功能。

不过,e-cores 将仅限于融合 AVX10 的最大 256 位向量长度,而 P-cores 可以使用 512 位向量。这感觉类似于 Arm 的 SVE 对可变向量宽度的支持。

AVX10 推出后,英特尔将冻结 AVX-512 ISA,今后 AVX-512 指令的所有使用都将通过 AVX10 ISA 进行。

使用Python生成BaiduPCS工具的百度网盘秒传信息

有一次想使用百度网盘自带的Windows客户端上传一些大量音乐文件,这些音乐文件其他百度网盘用户肯定早都上传过,所以基本这些文件不会占用太多网络上传带宽,但是百度网盘自带的Windows客户端计算文件的md5过程非常慢,估计是为了避免计算md5过程影响电脑整体性能,所以故意没有开全速计算,后来利用BaiduPCS命令行工具进行上传,所以写了一个Python代码进行md5计算,计算过程可以达到磁盘的峰值速度。

Nitrokey Pro 使用方法

Windows管理Nitrokey Pro使用Gpg4win(https://gpg4win.org/),此工具会自动安装GnuPG,设置Nitrokey Pro信息的时候会用到GnuPG的命令行工具。

 

GnuPG命令行说明

gpg --card-status 查看智能卡状态

gpg --card-edit 编辑智能卡

fetch 可以从设置的url中获取公钥

admin 显示管理命令

passwd 可以修改PIN与Admin PIN码

gpg --export-ssh-key ************************* 导出ssh用的公钥(符合ssh的规范)

 

设置记录

默认PIN(用于日常操作,如解锁令牌,签名和加解密等):123456

默认Admin PIN:12345678

重置码:(*******************)用户重置PIN

name: myname

url: http://keyserver.ubuntu.com/pks/lookup?op=get&fingerprint=on&search=0xF83BB3599EF21740 (用ubuntu的速度比较快)

lang: cn

sex: M

login: username

 

换到其它电脑上使用Nitrokey Pro时候,要先导入对应的公钥,否则gpg无法使用Nitrokey Pro。

 

如果忘了Nitrokey Pro的密码官方提供了一个工具(CryptoStickReset.exe),可以初始化(很彻底和新买的一样)。

 

参考

https://raymii.org/s/articles/Nitrokey_Start_Getting_started_guide.html

https://www.nitrokey.com/de/putty

 

 

--------------------------------其它--------------------------------

修改信任

$ gpg --edit-key <Uid>

gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc.

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

 

pub  1024D/6EDA5E6F  created: 2013-08-29  expires: never       usage: SCA

trust: full          validity: unknown

sub  1024g/32E0CB1C  created: 2013-08-29  expires: never       usage: E

[ unknown] (1). <Uid>

 

gpg> trust

pub  1024D/6EDA5E6F  created: 2013-08-29  expires: never       usage: SCA

trust: full          validity: unknown

sub  1024g/32E0CB1C  created: 2013-08-29  expires: never       usage: E

[ unknown] (1). <Uid>

 

Please decide how far you trust this user to correctly verify other users' keys

(by looking at passports, checking fingerprints from different sources, etc.)

 

1 = I don't know or won't say

2 = I do NOT trust

3 = I trust marginally

4 = I trust fully

5 = I trust ultimately

m = back to the main menu

 

Your decision? 5

Do you really want to set this key to ultimate trust? (y/N) y

 

pub  1024D/6EDA5E6F  created: 2013-08-29  expires: never       usage: SCA

trust: ultimate      validity: unknown

sub  1024g/32E0CB1C  created: 2013-08-29  expires: never       usage: E

[ unknown] (1). <Uid>

Please note that the shown key validity is not necessarily correct

unless you restart the program.

 

gpg> quit

 

将以有密钥导入到Nitrokey Pro中

$ gpg --edit-key 559C215F

gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software Foundation, Inc.

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

 

Secret key is available.

 

pub  1024D/559C215F  created: 2009-05-04  expires: never       usage: SC

trust: ultimate      validity: ultimate

sub  2048g/5457F4E7  created: 2009-05-04  expires: never       usage: E

sub  1024R/E1D9B30D  created: 2009-05-13  expires: never       usage: S

sub  1024R/EDDA691E  created: 2009-05-13  expires: never       usage: E

[ultimate] (1). Martin Gollowitzer (Testing environment) <gollo@fsfe.org>

 

Command> toggle

 

sec  1024D/559C215F  created: 2009-05-04  expires: never

ssb  2048g/5457F4E7  created: 2009-05-04  expires: never

ssb  1024R/E1D9B30D  created: 2009-05-13  expires: never

ssb  1024R/EDDA691E  created: 2009-05-13  expires: never

(1)  Martin Gollowitzer (Testing environment) <gollo@fsfe.org>

 

Command> key 2

 

sec  1024D/559C215F  created: 2009-05-04  expires: never

ssb  2048g/5457F4E7  created: 2009-05-04  expires: never

ssb* 1024R/E1D9B30D  created: 2009-05-13  expires: never

ssb  1024R/EDDA691E  created: 2009-05-13  expires: never

(1)  Martin Gollowitzer (Testing environment) <gollo@fsfe.org>

 

Command> keytocard

Signature key ....: [none]

Encryption key....: [none]

Authentication key: [none]

 

Please select where to store the key:

(1) Signature key

(3) Authentication key

Your selection? 1

 

You need a passphrase to unlock the secret key for

user: "Martin Gollowitzer (Testing environment) <gollo@fsfe.org>"

1024-bit RSA key, ID E1D9B30D, created 2009-05-13

 

gpg: generating new key

gpg: 3 Admin PIN attempts remaining before card is permanently locked

 

Admin PIN

 

sec  1024D/559C215F  created: 2009-05-04  expires: never

ssb  2048g/5457F4E7  created: 2009-05-04  expires: never

ssb* 1024R/E1D9B30D  created: 2009-05-13  expires: never

card-no: 0001 00000229

ssb  1024R/EDDA691E  created: 2009-05-13  expires: never

(1)  Martin Gollowitzer (Testing environment) <gollo@fsfe.org>

 

Command> key 2

 

sec  1024D/559C215F  created: 2009-05-04  expires: never

ssb  2048g/5457F4E7  created: 2009-05-04  expires: never

ssb  1024R/E1D9B30D  created: 2009-05-13  expires: never

card-no: 0001 00000229

ssb  1024R/EDDA691E  created: 2009-05-13  expires: never

(1)  Martin Gollowitzer (Testing environment) <gollo@fsfe.org>

 

Command> key 3

 

sec  1024D/559C215F  created: 2009-05-04  expires: never

ssb  2048g/5457F4E7  created: 2009-05-04  expires: never

ssb  1024R/E1D9B30D  created: 2009-05-13  expires: never

card-no: 0001 00000229

ssb* 1024R/EDDA691E  created: 2009-05-13  expires: never

(1)  Martin Gollowitzer (Testing environment) <gollo@fsfe.org>

 

Command> keytocard

Signature key ....: [none]

Encryption key....: [none]

Authentication key: [none]

 

Please select where to store the key:

(2) Encryption key

Your selection? 2

 

You need a passphrase to unlock the secret key for

user: "Martin Gollowitzer (Testing environment) <gollo@fsfe.org>"

1024-bit RSA key, ID EDDA691E, created 2009-05-13

 

gpg: generating new key

 

sec  1024D/559C215F  created: 2009-05-04  expires: never

ssb  2048g/5457F4E7  created: 2009-05-04  expires: never

ssb  1024R/E1D9B30D  created: 2009-05-13  expires: never

card-no: 0001 00000229

ssb* 1024R/EDDA691E  created: 2009-05-13  expires: never

card-no: 0001 00000229

(1)  Martin Gollowitzer (Testing environment) <gollo@fsfe.org>

 

Command> save