不,对于发送消息,您应该使用较新的OAEP方案,因为具有PKCS#1 v1.5的RSA可能容易受到
Bleichenbacher attack的影响.但是,完全可能甚至可能请求RSA混合加密的人从未听说过该攻击.通常,PKCS#1 v1.5填充仍用作默认值.
您永远不应指望用户为您做出安全决策,除非唯一的用户是密码学的学生(并了解上述攻击).一般而言,安全性不应过分依赖于教育用户.
就个人而言,我当然会问请求者有关填充的问题.您还应该检查他们是否期望对称加密的身份验证(MAC,HMAC,经过身份验证的密码或签名).如果他/她无法回答问题,他们可能对加密知之甚少.
我目前不会认为你的要求是完整的(虽然“出于学习目的”可能是一个借口).
笔记
“RSA / ECB / PKCS1Padding”实际上没有实现ECB模式加密.它应该被称为“RSA / None / PKCS1Padding”,因为它只能用于加密单个明文块(或者实际上是一个密钥).这只是Sun / Oracle的命名错误.
还有一种称为RSA-KEM的混合加密模式应该至少与RSA OAEP一样安全,但它尚未在Java SE中实现.
AES-256本身不应用于“生成一次性密钥”.您应该使用KeyGenerator的实例生成AES-256一次性密钥(这可能有点混淆,因为KeyGenerator本身不使用AES,它会为AES创建密钥).