您已经将您的智能卡提供程序移到了Java SE上的其他提供程序的前面,并且由于某种原因,它还在尝试验证RSA签名,而不仅仅是将其用于RSA私钥操作。
有几种解决方法:
- 如果您使用相同的签名实例进行验证,则使用带有公钥的其他签名实例进行验证
- 如果那不能解决您的问题,请尝试查看是否可以将智能卡提供程序在
Security
类中的提供程序列表中向下移动(有关如何执行此操作,请参阅JCA文档) - 否则,只需使用
Signature
该类提供正确的提供程序,我建议指定"SunRsaSign"
(您可能希望使此字符串可配置) - 向背后的公司解释
com.mse
,他们应该正确实施 延迟的提供者选择 ,而不是吞噬要在其硬件设备中使用的软件公钥
注意,由于智能卡充当服务器,谈论“服务器端”非常令人困惑。“终端端”和“卡端”将更加清晰。



