这几天对java 和.net的加密互操作进行了研究,由于两者的加密密钥的编码机制不同,所以互不相认!
    之后发现.net的加密密钥编码是基于Base64编码机制的,则用Apache的org.apache.commons.codec包中的Base64类对其进行解码,然后java便能识别其格式,
之后再调用java的RSAPublicKeySpec类重构RSA密钥,之后加密数据,再返给.net 以Base64编码机制的字符串(加密后的串)。但.net不认此字符串,返回错误-“不正确的数据”
    哪位高手由此经验,指点指点小弟

解决方案 »

  1.   

    密钥还有编码机制? 对于密码算法,密钥永远都是若干位的数据。当然,Java和.net都有自己的密钥类,Java里面有根据byte[] 创建密钥对象的方法,没用过.net,不知有没有,感觉上应该是有。两边都基于同样在密钥(二进制数据)创建自己的密钥对象用于加、解密,应该是没问题的。这种情况下的加密要看两边的设置是否一样,如填充方式等,如果填充方式不一样,那肯定是要出错了。