design.md 1.7 KB

Context

RSACrypt(44 行,encrypt + toUrlSafe)目前只存在 mjava-guangming/util/ 下。该类没有任何 guangming 业务特定逻辑,纯是 RSA 公钥加密的通用工具。基座已有 com.malk.server.dingtalk.crypto.DingCallbackCrypto(钉钉专用,不动),但没有对应的通用加密工具包。

Goals / Non-Goals

Goals

  • RSACrypt 在基座可用,未来新业务模块直接 import com.malk.util.crypto.RSACrypt 即可
  • 不破坏 mjava-guangming 内所有既有调用,业务代码零感知

Non-Goals

  • 不加 decrypt / sign / verify 等新方法(无真实需求,避免过度设计)
  • 不加自定义异常类,继续让调用方处理 Exception
  • 不改 DingCallbackCrypto,它与 RSA 无关

Decisions

D1:新建 com.malk.util.crypto 包放通用加密工具

  • 理由:与已有 com.malk.util.*(如 McUtil 等)的组织一致;未来若需要 AES / SM2 等工具也落在此包
  • 替代:也可以放 com.malk.server.dingtalk.crypto/,拒绝 —— RSACrypt 非钉钉专用

D2:旧类保留为 @Deprecated 委托壳,不立即删除

  • 理由mjava-guangmingMailSsoController 等调用方已经 import 旧路径。留一个壳能让这些业务代码本次完全不动,降低 blast radius
  • 后续:下次有动到 mjava-guangming 的 change 时再顺手把 import 切到新路径,彻底删壳

Risks / Trade-offs

  • [两份类同时存在的混淆]@Deprecated + javadoc 指向新类;IDE 使用旧类会有删除线警告,自然引导迁移
  • [未来 DingCallbackCrypto 是否也该搬] → 不搬。它绑死钉钉协议,命名本身就带"Ding",留在 server/dingtalk/crypto/ 语义更准