密钥不是密码:从加密算法到密钥全生命周期管理

做安全这么些年,我发现一个特别普遍的现象:很多人一听到“密钥”,第一反应就是“哦,密码嘛”。这个误解比想象中更耽误事。密钥不是你在网站注册时设的那串字符,也不是登录服务器的口令。密钥是加密算法真正依赖的那个“数字参数”,它决定了同一段明文经过同一个算法,最后出来的是不是同一段密文。想彻底搞懂HTTPS为什么能防嗅探、SSH为什么能免密登录、数字签名为什么能防抵赖,第一步就是把“密钥”这两个字彻底看透。这篇文章写给刚接触密码学的人,也写给别人已经在用加密接口但总在密钥格式上翻车的开发者的。我会从最基础的概念一路拆到实操,把对称与非对称、密钥生命周期、常见坑一次性讲透。可能不会让你立刻成为密码学专家,但能让你在真实场景里敢动手、少踩雷。

1. 密钥的本质:先把这个基础概念真正看透

1.1 密钥与密码:不是同一个东西

经常有人问我:“我把密码设复杂一点,是不是就等于用了强密钥?”不是。密码是给人看的、用来证明“我是谁”的凭证,本质是一次比对;密钥是给算法用的、用来控制“数据怎么变”的参数,本质是一次变换。前者像行李箱的密码锁,拨对数字就开;后者像一把实体钥匙,齿形直接决定锁芯里每个弹子的位置。你把密码忘了可以重置,你把密钥丢了,那份加密数据可能永远打不开。

维度密码密钥
本质人机交互凭证算法变换参数
形态用户可记忆的字符二进制随机序列
作用验证身份控制加解密运算
存储方式服务端哈希比对密钥库、HSM、KMS
丢失影响重置即可恢复数据可能永久无法解密

密码和密钥的安全目标完全不同。密码讲究“记忆性”和“防猜测”,密钥讲究“随机性”和“不可预测”。现代密码学里有一条非常重要的设计原则——Kerckhoffs原则:加密系统的安全性应当完全系于密钥的保密性,算法本身甚至应当公开。很多人听到“算法公开”会觉得不可思议:“算法公开了,岂不是给了攻击者破解的线索?”恰恰相反,让全世界一起审视算法,反而能把脆弱的设计暴露出来。经过长期检验的公开算法,远比那些藏着掖着的私有方案可靠。所以干这一行,最重要的安全资产就是密钥,算法反而可以大大方方给对手看。

1.2 密钥长度与熵:位数的背后是“难猜程度”

聊到密钥,绕不开“多少位”。AES-128、AES-256、RSA-2048,这里的数字就是密钥长度,单位是“比特”。比特数决定的是密钥的搜索空间:128位密钥意味着有2^128种可能组合,这是一个大得反直觉的数。2^128大约等于3.4×10^38,而地球上所有沙粒加起来大概在10^22数量级。假设你有一台能每秒尝试10亿亿次的超级机器,把全天能量都耗上,也要几十亿年才能穷举完。这就是为什么128位现在依然被认为是安全底线。

但“位数够长”不等于“密钥够强”,这里有个容易被忽略的概念:熵。熵衡量的是随机性,或者说“不可猜测性”。一个16位的密钥,如果它只能从数字0到9里选,那实际可能组合只有10^16,远远小于2^16;可如果你让用户去设一个“密钥”,用户很可能用生日、单词、电话号码,这种密钥的熵极低,攻击者根本不需要暴力破解,拿着字典一跑就出来了。所以行业里有条共识:密钥必须来自密码学安全的随机源,而不是人脑想出来的“随机”。人脑没有真正的随机性。

1.3 算法公开、密钥保密:安全感从哪来

前面说Kerckhoffs原则,可能有人还是觉得悬。我举个直白的例子:一个保险柜生产厂家把设计图公布在官网上,保险柜依然是保险柜,没人靠看图就能打开,因为打开它需要的是那串只有你知道的密码盘组合。密码学也一样,AES这套“如何打乱数据”的流程全世界都知道,但每份数据的打乱方式——也就是密钥——只有通讯双方知道。攻击者手里有密文、有算法、甚至有明文样本,他缺的就是那一把密钥。这把密钥只要足够随机、足够长、保管得足够好,密文就是安全的。

这段逻辑听懂了,后面看任何加密系统都会顺畅很多。下一步看两种最主流的密钥体系:对称与非对称。

2. 对称加密与非对称加密:两种密钥体系的实战对比

2.1 对称加密:效率优先,但密钥怎么送出去是硬伤

对称加密很好理解:加密和解密用的是同一把密钥。AES、ChaCha20都是对称算法,特点是快,特别快,硬件加速以后可以达到每秒几GB的吞吐量。所以数据量大、性能敏感的场景里,对称加密永远是主力。我日常验证文件是否被改过、给磁盘做全盘加密,用的都是对称加密。

实际操作起来很简单。用通用的openssl命令行工具,AES-256-CBC加密一个文件:

openssl enc -aes-256-cbc -pbkdf2 -salt -in plain.txt -out plain.enc

解密时再用这把密钥逆向操作:

openssl enc -d -aes-256-cbc -pbkdf2 -in plain.enc -out plain.dec

说两个关键点。第一,加盐(-salt)和-pbkdf2参数强烈建议带上。不加盐意味着相同的明文和相同的密钥永远产生相同的密文,这会泄漏可被利用的统计信息;不用PBKDF2而直接用低强度密码做密钥,又会带来字典攻击风险。第二,CBC这类分块加密模式需要一个初始向量(IV),同一把密钥如果重复用同一个IV,密文就容易被分析。严格来说IV应当随机生成,每次加密都不一样。

对称加密最大的麻烦在于:密钥怎么安全地送到对方手里?电话里念?邮件里发?找人当面拷?传输过程中一旦被窃听,密钥泄露,后面所有加密都白搭。这个“密钥分发问题”就是对称加密的七寸,也是非对称加密登场的理由。

2.2 非对称加密:公钥私钥的分工协作

非对称加密使用一对密钥:公钥和私钥。公钥可以公开传播,私钥自己死守。用公钥加密的数据只能用私钥解密;反过来,用私钥签名的数据只能由公钥验签。这两个方向成立的前提是数学上的单向性:从一个关键点算出公钥很容易,但从公钥反推私钥在计算上不可行。RSA是代表,ECC椭圆曲线也是。

生成一对RSA密钥,用openssl或者ssh-keygen都很方便:

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private_key.pem openssl rsa -in private_key.pem -pubout -out public_key.pem

或者用SSH场景更常见的:

ssh-keygen -t ed25519 -C "某个标签"

第一种适合做TLS证书、文件加密里的密钥交换;第二种适合服务器登录认证。生成之后,公钥发出去,私钥留本地。别人用你的公钥加密一批数据发给你,只有你的私钥能解开。

非对称加密的安全性很好,但代价是慢。RSA-2048在普通机器上做一次公钥加密可能只要几毫秒,但和对称加密每秒GB级别的吞吐量相比,差了无数个量级。所以非对称加密几乎不直接用于加密大文件,它最擅长的是加密短小的关键材料,比如下一步要说的“会话密钥”。

2.3 混合加密:现实中几乎用的都是这套办法

你真正打开一个HTTPS页面时,浏览器和服务器之间跑的就是一套“混合加密”。大致流程是:浏览器和服务器先通过TLS握手协商出一个密码套件,服务器把自己的公钥和证书发给浏览器;浏览器验证证书可信后,生成一个随机的“会话密钥”(通常就是对称密钥),用服务器的公钥加密,发给服务器;服务器拿私钥解开得到会话密钥。接下来双方都用这把会话密钥做对称加密通信。

这个流程的价值在于:非对称加密只用来护送一小段会话密钥,性能开销可控;真正的大流量加密交给对称加密,速度快。而每一次TLS会话的会话密钥都是独立随机生成的,即使服务器长期私钥在某一刻泄露,攻击者也拿不回历史会话的明文——这个特性叫“前向保密”。现在主流的TLS部署还会额外加入临时密钥交换机制,简单说就是每一次握手都额外生成一把临时密钥对,进一步强化前向保密。

理解了这层,前面两个小节就串起来了。对称加密负责干活,非对称加密负责安全地交接工具,各司其职。

3. 密钥全生命周期管理:从生成到销毁都不能含糊

3.1 生成密钥:随机性才是安全的地基

密钥质量的下限,在它出生的那一刻就决定了。如果不使用密码学安全的随机源,哪怕生成256位,攻击者也可能用极小的代价猜出来。程序里最常见的坑是调用普通随机函数去拼“随机数”。普通随机函数更看重统计均匀性,而不是不可预测性,有时候还依赖当前时间作为种子,一旦攻击者掌握了时间范围,密钥空间就缩小到可以暴力试。

Linux下用/dev/urandom,Windows下用系统加密API,或者直接用openssl rand:

openssl rand -base64 32

这条命令生成32字节(即256位)的随机密钥,足够用于大多数对称加密场景。注意生成的是真正随机的密钥材料,不要用手敲的字符串去替代。

如果要用口令保护这把密钥,那就要通过KDF(密钥派生函数)来转换,而不是拿口令直接当密钥。PBKDF2、scrypt、Argon2都是常见的KDF选择。核心操作是加一个随机盐,加高迭代次数,把人的弱口令变成高熵的派生密钥。我见过不少人把登录口令直接当成AES密钥用,密文确实产生了,但攻击者一个字典就能还原明文,这比不加密还误导人。

3.2 密钥分发与信任根:公钥也会被调包

对称密钥的分发难,非对称密钥看似解决了问题——公钥可以公开传,可是“可以公开传”不等于“可以安全传”。张三要给我发密文,他得先拿到我的公钥。如果中间有个坏人,把我的公钥换成了他自己的公钥,张三用坏人的公钥加密,密文发出后坏人自己用私钥解开,再转发给我。张三看到的密文是发给我的,实际上已经被人看过、甚至改过了。这就是中间人攻击。

对应的解决办法是建立信任。最常见的是PKI证书体系:CA机构给公钥签名,浏览器内置信任的根证书,所以TLS通信时能验证“这个公钥确实属于这个域名”。还有一种容易被忽视的是“首次使用信任”模式,比如SSH登录时第一次连到服务器会显示主机指纹,如果你确认指纹没问题并信任,后续再连时就以这个指纹做校验。很多人直接忽略指纹确认,输入yes,这种习惯一旦碰到被劫持的伪服务器,私钥口令就可能被钓鱼,真心建议改掉。

3.3 密钥存储与访问控制:私钥只能在一个地方躺着

私钥一旦泄漏,所有用它保护的东西都等于白送。最恶劣的习惯就是把私钥写在代码里、放在配置文件中、甚至提交到版本库。这类事故每年都在发生。正解有三个层次。

第一层,主机级防护。私钥文件的权限严格控制,SSH私钥通常要求权限不能超过600。给私钥加上口令保护,即使文件被拷走,没有口令也无法直接使用。第二层,使用密钥管理工具。本地可以用密钥库、密码管理器、ssh-agent之类,把私钥放在内存里,减少私钥对磁盘的暴露。第三层,规模化场景使用HSM或者云端的密钥管理服务(KMS)。这类产品把密钥放在硬件或专门的安全隔离区,调用接口时密钥本身不离开安全边界,业务系统只拿到“运算结果”。具体选哪层,取决于系统是个人脚本还是企业级平台,但原则一致:私钥存在的面越小越好,能不出内存就不出内存。

还有一个经常被忽略的点:备份恢复。密钥丢了和密钥泄露一样可怕,数据加密后就再也解不开了,这就是“一失足成千古恨”。备份时要把密钥导出到受控的加密存储中,同时做好多副本。家族照片加密存储也好、公司数据库加密备份也好,道理都一样。

3.4 密钥轮换与销毁:安全是动态的,不是一次完成的

很多人以为生成了密钥就一劳永逸。实际上密钥有生命周期,该轮换就要轮换,该销毁就要销毁。轮换的理由很直接:密钥使用时间越长,被泄露或侧信道分析的风险越高;万一某一天某把密钥泄露了而没有轮换机制,过去和未来的数据都会受到牵连。所以严肃一点的项目都会定义密钥有效期:会话密钥按天或按小时、签名密钥按年、根证书密钥可能几年。轮换不是把旧密钥丢掉就行,需要设计过渡期,让新旧密钥在合理的时间窗口内并存,保证服务不中断。

销毁则要求“不可逆”。在普通磁盘上执行rm删除,在攻击者眼里可能还能从剩余扇区里恢复。对密钥来说,销毁不仅要删除文件,还要把存储介质上的对应区域做覆写,或者用支持“安全擦除”的存储。在硬件密钥设备里,很多产品支持“加密删除”:对密钥加密后再把加密密钥销毁,这样即使整个设备被拿去做物理分析,也恢复不出有效密钥。密钥管理的每一步,本质上都是在和“恢复”较劲。

4. 常见问题与排查技巧实录

4.1 密钥泄漏了,别慌,按顺序处理

真到泄漏那天,第一件事不是删库跑路,而是冷静地按优先级处理。立刻撤销并暂停那把密钥在某系统的信任关系;马上通知使用该密钥加密过的数据所在业务方,评估影响范围;启动密钥轮换,生成新密钥并重配相关服务;审计日志,看可疑的调用记录,排查是否已有异常访问。如果是云上密钥,直接看KMS或密钥管理产品的轮换与撤销功能,通常一键就能把旧密钥标记为失效。

这里给一个我自己的经验:发现泄漏后的头半小时不要急着删除文件和重启服务,先把现场日志和相关证据留好,然后才做轮换。很多人一紧张直接把服务器重启,日志丢得一干二净,后面想定位问题就特别被动。还有一点,判断泄漏范围时不要只看生产环境,开发环境、测试环境如果用了同一把密钥,也要一并处理。泄漏的杀伤力是跟着复用关系走的,同一把密钥复用得越多,清污范围就越大。

4.2 密钥格式和编码的坑:报错全是“看不懂的钥匙”

做开发的人里,十个有八个在密钥格式上面栽过跟头。常见的格式有PEM、DER、PKCS#1、PKCS#8,还有OpenSSH自己的格式。PEM是base64编码的文本,带“BEGIN ... PRIVATE KEY”头;DER是二进制;PKCS#1是RSA专用格式,PKCS#8是通用格式。最经典的报错是遇到“BEGIN RSA PRIVATE KEY”和“BEGIN PRIVATE KEY”。前者是PKCS#1,后者是PKCS#8,很多程序默认只认其中一种。解决方案是用openssl转格式:

openssl pkcs8 -topk8 -inform PEM -in rsa_private.pem -outform PEM -nocrypt -out rsa_private_pkcs8.pem

另一个高频问题是换行符。PEM文本虽然看起来像普通文本,其实对换行和尾随空格敏感,某些工具在Windows上编辑过之后,密钥文件就“废了”。建议非必要不手动编辑密钥文件,要用编程方式读取。还有一类是公钥格式差异,SSH公钥(ssh-rsa AAAA...)和X.509公钥(BEGIN PUBLIC KEY)长得完全不一样,别看外表都是“一串不明字符”,拿错格式去验证签名就会得到莫名其妙的错误。

4.3 密钥长度怎么选:别盲目追求“越大越好”

我看到有些项目一上来就上RSA-4096,以为越长越安全。其实RSA-4096虽然更安全,但性能开销明显增大,握手延迟变高,对业务收益却极小。业界目前的主流是RSA-2048以上开始向ECC迁移,ECC(比如P-256)在提供同等安全强度的情况下密钥短、计算快,已经是新的默认选择。如果加密场景是AES,128位在可预见的未来依然安全,256位适合对安全等级有更高要求或者需要应对未来计算场景的系统。整体思路是:根据数据敏感性、合规要求和性能预算综合选,而不是无脑选最大。选错了长度,倒霉的是每一次建立连接的用户。

4.4 最容易忽略的误区:拿口令当密钥、拿公钥当保险箱

之前说过口令必须经过KDF转换才能当密钥用。这里再补一个同样危险的误区:公钥只能加密,不能保证内容一定不被篡改。真正要确认“这条消息确实是我发的”,用的是私钥签名、公钥验签,而不是公钥加密。很多人把公钥“等同于保险箱”,以为用公钥加密就万事大吉,但如果不配合签名和证书体系,消息的完整性和来源依然是纸糊的。理解这个差别,才算真正摸到非对称密码的门口。

5. 给入门者的实操路径建议

5.1 纸上得来终觉浅:四步上手路线

如果看到这里,建议立刻动手走一遍。第一步,用openssl enc给一个文本文件加密、解密,感受对称加密和口令派生。第二步,用ssh-keygen生成密钥对,把公钥放到一台远程服务器上,体验SSH免密登录。第三步,给自己签发一张自签TLS证书,本地起一个HTTPS服务,看浏览器和服务器握手。第四步,给一个常用脚本加入“读取环境变量里的密钥、用KDF派生、加密文件”的完整流程。

这四步走完,密钥不再是一个抽象概念,你会亲眼看到它在哪里生成、在哪里流转、在哪里变成安全壁垒。别嫌这些案例简单,很多从业者回头补课用的都是这条路线。等你跑通了,再回去看TLS握手协议、看证书链校验,会发现思路完全不一样,因为你已经知道每个环节背后的“钥匙”长什么样。

5.2 一个小工具链清单

  • openssl命令行:生成密钥、转换格式、加解密,适合调试和一次性任务
  • ssh-keygen与ssh-agent:SSH密钥全生命周期管理
  • age或类似的现代文件加密工具:命令行加密文件的极简选择,对新手友好
  • 密码管理器:存私钥口令、恢复代码,比散落各处的文本文件靠谱得多
  • HSM/KMS:企业级托管密钥,建议先懂概念,再视需求引入生产环境

这些工具本身并不复杂,复杂的是对密钥生命周期的理解。工具只是手段,密钥从生成到销毁的每一条链路有没有想清楚,才决定系统安全的下限。

最后再说一个我自己的教训。早年间我把一份项目私钥放在移动硬盘里“保险”,结果硬盘意外损坏,备份也没做好,那个项目的加密配置全成了打不开的废铁。我后来做任何密钥相关方案,第一件事一定是先把备份、恢复、轮换、销毁四条链路想清楚,再谈算法选型和性能。密钥这个东西,安全从来不是靠某一个环节的奇技淫巧,而是靠每一步都不过度自信、每一份关键资产都有妥善去处。希望这篇基础入门,能帮你少踩几个我当年踩过的坑。

相关新闻

计算机视觉学术速递拆解:从高频词到落地价值的阅读方法论

计算机视觉学术速递拆解:从高频词到落地价值的阅读方法论

1. 计算机视觉学术速递到底在速递什么第一次看到"计算机视觉学术速递[9.7]"这个标题,很多人会以为就是一个论文列表搬运。但我实际跟踪这类速递内容两年多,发现真正有价值的部分根本不是"有哪些新论文",而是从当天扎堆出…

2026/10/20 9:46:04 阅读更多 →
C语言入门不绕路:环境搭建、指针初体验与新手高频坑

C语言入门不绕路:环境搭建、指针初体验与新手高频坑

决定学C语言那天,我在笔记本上只写了一行字:从今天开始,不绕路了。之前大半年我一直徘徊在各种语言教程里,能照着写点小工具,但只要别人追问一句"那个内存错误到底怎么回事""为什么这段代码快那段代码慢…

2026/10/20 9:46:04 阅读更多 →
Transformer长上下文之困:SSM与混合架构如何破局?

Transformer长上下文之困:SSM与混合架构如何破局?

1. 为什么Transformer的“上下文墙”不只是算力问题,而是记忆结构问题我一开始接触长文本任务的时候,也以为只要把显卡堆上去、把序列长度拉到128K、甚至1M,Transformer就能从容应对。直到有一次跑一个金融公告的风险因子抽取任务&#xff0c…

2026/10/20 9:46:04 阅读更多 →

最新新闻

ROS2+Autoware实车部署:跨越仿真与物理世界的三堵墙

ROS2+Autoware实车部署:跨越仿真与物理世界的三堵墙

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:22:04 阅读更多 →
平均值缩放算法在主从自动分配与集群扩容中的工程实践与专利规避

平均值缩放算法在主从自动分配与集群扩容中的工程实践与专利规避

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:22:04 阅读更多 →
微博热搜自动爬取工具:JSON接口解析+结构化Excel导出

微博热搜自动爬取工具:JSON接口解析+结构化Excel导出

简介:本资源是一份面向Python初学者与数据采集实践者的轻量级微博热搜爬虫实战项目,聚焦社交媒体热门话题的自动化抓取与结构化存储。项目使用requests发送HTTP请求、BeautifulSoup解析HTML页面,精准提取微博TOP50热搜标题及对应链接&#xf…

2026/10/20 10:22:04 阅读更多 →
Claude Code vs Codex:独立开发者与AI创业者的工具选型指南

Claude Code vs Codex:独立开发者与AI创业者的工具选型指南

1. 工具选型的本质:不是选“最强”,而是选“最合身”先把结论摆在前面:Claude Code 和 Codex 这两个东西,压根不是同一类产品,很多人把它们放在一起比,本身就是个伪命题。我见过太多独立开发者在这上面纠结…

2026/10/20 10:22:03 阅读更多 →
协处理器系统集成实践:三种形态、寄存器设计与驱动排错

协处理器系统集成实践:三种形态、寄存器设计与驱动排错

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:22:03 阅读更多 →
可重构低功耗AI芯片:智能门锁从省电到端侧智能的关键

可重构低功耗AI芯片:智能门锁从省电到端侧智能的关键

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:21:03 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →