## 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-guangming` 内 `MailSsoController` 等调用方已经 import 旧路径。留一个壳能让这些业务代码**本次完全不动**,降低 blast radius - **后续**:下次有动到 `mjava-guangming` 的 change 时再顺手把 import 切到新路径,彻底删壳 ## Risks / Trade-offs - **[两份类同时存在的混淆]** → `@Deprecated` + javadoc 指向新类;IDE 使用旧类会有删除线警告,自然引导迁移 - **[未来 DingCallbackCrypto 是否也该搬]** → 不搬。它绑死钉钉协议,命名本身就带"Ding",留在 `server/dingtalk/crypto/` 语义更准