很奇怪的问题,大家帮帮忙吧。
代码:
<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(),是不是哪里有问题~
------解决方案--------------------字节数组的问题