日期:2014-05-18  浏览次数:20760 次

很奇怪的问题,大家帮帮忙吧。
代码:

<body>
<p>
    <%  
      abc.getKey();
      String   result=ddd.getdisksn();//通过jni获取的硬盘序列号
      String   result2= "75JO6066S00016CCA8767 ";
      String   mi=abc.getEncString(result2);//des加密函数
      String   mi2=abc.getEncString(result);
%>
</p>
<p> result=   <%=result%> </p>
<p> result2=   <%=result2%> </p>
<p> mi=   <%=mi%> </p>
<p> mi2=   <%=mi2%> </p>
</body>

显示结果:
result=   75JO6066S00016CCA8767

result2=   75JO6066S00016CCA8767

mi=   6VdCpwOTBuZ7BOdr4t36HQq7pIAkibDv

mi2=   1oDXXNbNGEW8wqhK373KWHpcaZBLG78Y9vUueHSmqnZNBJsOY+CFbA==

问题:
      result应该和result2的值是一样的,为什么加密出来的结果不一样呢?解密时通过abc.getEnsString(result)加密的内容就可以得到75JO6066S00016CCA8767的结果,而通过abc.getEncString( "75JO6066S00016CCA8767 ")加密的就不可以。以下为getEncString函数代码:

public   String   getDesString(String   strMi)
  {
    BASE64Decoder   base64De   =   new   BASE64Decoder();
    byte[]   byteMing   =   null;
    byte[]   byteMi   =   null;
    String   strMing   =   " ";
    try
    {
      byteMi   =   base64De.decodeBuffer(strMi);
      byteMing   =   this.getDesCode(byteMi);
      strMing   =   new   String(byteMing,   "UTF8 ");
    }
    catch(Exception   e)
    {
      e.printStackTrace();
    }
    finally
    {
      base64De   =   null;
      byteMing   =   null;
      byteMi   =   null;
    }
    return   strMing;
  }


------解决方案--------------------
因该是加密算法的问题吧,是不是里边有对其他条件的算法加进去了
比如时间了,机器序列号了什么的
这样可以保证密钥唯一
------解决方案--------------------
检查一下你的getDesCode(),是不是哪里有问题~
------解决方案--------------------
字节数组的问题