在项目中使用了RC4解密,为了解密我生成了和加密端一样的key,但是解密时老是不成功,直接使用简单的代码进行测试就成功了。细查原因,项目中的加解密调用不对称,加密方在生成key之后使用key做了一次加密测试,而解密方没有,查阅资料得:RC4 为流方式加密,加密解密需要同步。也就是说,用相同的密码将key1和key2初始化后,用key1加密一个分组,用key2解密这个分组。用key1加密的第i个分组,只能用key2的第i次来解密。而我的代码相当于用第i步加密,而用第i+1步解密,因此解不出明文,所以不能得到正确的明文,问题解决之。
并且加密和解密处理的字节数要相同,否则会导致解密失败。
附RC4介绍http://baike.baidu.com/view/904005.htm?fr=ala0,说实话,这介绍我看不懂。