You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP LibSodium库能否更改已存储加密数据的密钥?

能否用PHP LibSodium在不重置原始数据的情况下更改已加密数据的密钥?

答案是不能直接实现,但可以通过「解密-重新加密」的间接方式完成——前提是你持有原始加密密钥。

LibSodium的加密机制(比如crypto_secretbox对称加密或crypto_box非对称加密)是将明文与密钥绑定生成密文的,密文无法直接转换为对应新密钥的密文,必须先通过旧密钥解密得到原始明文,再用新密钥重新加密。

具体操作步骤(以对称加密crypto_secretbox为例):

  • 使用旧密钥解密已加密的数据,还原出原始明文
  • 生成新的对称密钥(可通过random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES)生成)
  • 用新密钥重新加密明文,得到对应新密钥的密文
  • 替换原密文为新密文,同时彻底废弃旧密钥

关键注意事项:

  • 操作过程中要确保明文在内存中的安全性,避免被泄露或写入日志
  • 若处理批量数据,建议分批操作,防止内存溢出
  • 完成后必须验证新密文能否用新密钥正常解密,确保数据完整性和正确性

内容的提问来源于stack exchange,提问作者Jake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:55:20