本帖最后由 u010756701 于 2013-05-19 15:59:01 编辑

解决方案 »

  1.   

    那是因为不同平台的DES算法采用不同的模式,
    你这句话ncryptCipher = Cipher.getInstance("DES");在不同平台下获取的值是不一样的,导致加密结果不一样,你需要指明DES具体类型,比如
    Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); 你可以看看这篇文章,  http://blog.csdn.net/randyjiawenjie/article/details/6617225这篇文章有原理介绍,如果是开发中,我推荐你使用http://www.iteye.com/topic/1127949这篇文章的des加密算法
      

  2.   

    谢谢您的解答,我还想问 我在android环境下 该怎么改 才能跟 jdk环境下 结果一样了? 主要是中文加密后,不一样!英文数字都一样!我写的是jdk环境下的DES加密 别人那边应该通过一样的算法解密,所以我就不能按照你的推荐方式去更改加密了。麻烦你帮我看看 怎么在android的环境中怎样改?才得到与JDK一样 谢谢了
      

  3.   

    你最好用引用的方式回复帖子,不然别人根本收不到提示。要不是我今天看了帖子,我现在都不知道你回复了
    我看了看的代码,我知道你的jdk环境是在windows下,windwos系统中文版采用GBK编码,而android系统采用UTF8编码,在你strIn.getBytes()这种方式传参的时候就注定了传入的byte数组不一样,“测试”这个字符串,你在windows下打印为4个字节,而在android下打印6个字节。你传入的时候就有问题,那么加密结果不用说就有问题了,如果你把代码弄到linux平台,又有问题了。个人感觉你的代码就没什么通用性,还是多参照别人的例子,然后在别人基础上改进。至于你说“我写的是jdk环境下的DES加密 别人那边应该通过一样的算法解密”这个问题,我给你网址里面就有DES加密以及解密。