在实际工作中,Android端和后端进行RSA报文加密操作时,发现密钥正确的情况下,Android端加密的数据,后端死活不能解密,最后发现是RSA操作的填充方式不对。
android系统的RSA实现是"RSA/None/NoPadding",
而标准JDK实现是"RSA/None/PKCS1Padding" ,
这造成了在android机上加密后无法在服务器上解密的原因
这里需要注意:
RSA的填充问题解决之后,还需要注意数据长度要求,
RSA非对称加密内容长度有限制,1024位key的最多只能加密127位数据,否则就会报错(javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes) , RS
本文探讨了Android应用中RSA加密数据时遇到的问题,服务端无法解密的原因在于Android系统默认使用"RSA/None/NoPadding"填充方式,而标准JDK采用"RSA/None/PKCS1Padding"。解决填充方式差异后,还需注意RSA加密的数据长度限制,不能超过密钥长度的特定值,否则会抛出"IllegalBlockSizeException"异常。文中提供了RSA签名和加解密的相关代码示例。
订阅专栏 解锁全文
1428

被折叠的 条评论
为什么被折叠?



