2 qq 29012825 qq_29012825 于 2016.01.18 16:26 提问

java用md5加密同一个签名后结果不一样??

需要验证签名是否一样,用md5加密后得到的签名跟对方报文中传过来的加密后的签名不一样??

5个回答

caozhy
caozhy   Ds   Rxr 2016.01.18 21:18

用winmd5之类的软件算下,看下你的程序和标准的是否一致,特别注意你的文件流的读取,还是按照文本文件读取的。

save4me
save4me   Ds   Rxr 2016.01.18 21:38

你确定对方加密的时候也是JAVA加密的吗?C#,JAVA等不同的语言加密有时候是不一样的

a1104258464
a1104258464   2016.01.18 16:31

可能是编码类型的问题

91program
91program   Ds   Rxr 2016.01.18 16:38

确定双方使用的版本,与加密过程是一样的。否则,产生不一样的结果很正常。

xymlsj2008
xymlsj2008   2016.01.18 16:28

不一样可能是jdk版本造成的

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
同一字符串,MD5加密后出现不同的结果
同一字符串,MD5加密后出现不同的结果背景 公司数据采用MD5加密和ssl双向认证,最近把项目部署到服务器进行测试,结果MD5验证总是通不过,服务器在请求过来的加密32位串和本地加密32位串作对比时,总是返回false,那么问题来了,加密之前的明文是相同的,为何同样的加密方法却得到了不同的结果? 问题分析 首先考虑到的是操作系统的不同,win下运行正常的代码为何到linux下就不行了,但是M
关于MD5验签失败 同一字符串 调用相同的加密方法 出现加密的值不一样的问题
废话不多说直接上代码  public static String getMD5Str(String str) {     byte[] msg = str.getBytes(); MessageDigest messageDigest = null; try { messageDigest = MessageDigest.getInstance("MD5"); messageDiges
java md5加密结果不一至的问题
问题:两种方式生成的md5串不匹配的问题 MAIN方法生成的: 871903B66AD9C3ED67CAD9C3D4214324 前端Controller生成的加密字符串: 6214869A27142CB8552AFA5D15742E84 md5方法: public final static String MD5(String s) {         c
解决java的md5与PHP的md5结果不同的问题
/** * 获取MD5加密后的字符串 * @param str 明文 * @return 加密后的字符串 * @throws Exception */ public static String getMD5(String str) throws Exception { /** 创建MD5加密对象 */ Me
算法--MD5--如何保证MD5加密结果在不同的环境下都相同
首先我们来看一下Java是如何实现MD5的:   import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Digest {     priv
md5Hex("中文")在main函数和tomcat环境中运行结果不同
DigestUtils.md5Hex("测试字符串"); 在main函数和tomcat环境中运行结果不同。 原因应该是main函数执行环境和tomcat执行环境的编码有区别导致加密结果不同; DigestUtils.md5Hex("测试字符串".getBytes("iso-8859-1")); 可以用如上述方法对字符串编码后再执行md5,这样就能保证在任何环境中加密结果都相同。
iOS开发-MD5签名APP端和接口端不统一的问题
场景 iOS应用开发过程中,偶尔出现“签名错误”的问题,这个签名错误本身是服务器接口端给的提醒,意思是,APP传的参数通过MD5加密之后的sign签名值,和服务器端拿到参数计算的签名值不一致,服务器就会认为这次请求不合法。 产生原因 MD5算法在计算签名时,默认会输出32位的字符串。某些场景下,可能会输出31位,此时有些算法会自动在首位补0。若服务器端和APP客户端的处理方式不一样,则会
Java中中文MD5加密结果不一致
遇到问题: 最近做项目,因为项目的服务器部署在MyEclipse上面,而客户端部署在Eclipse上面。 发现在MyEclipse和Eclipse上面,对字符串进行MD5加密,即使使用同一个DigestUtils工具类,加密的结果也不同。 研究了一阵 ,发现是因为字符串中包含中文的缘故。 解决办法:服务器和客户端都同时对要加密的字符串进行统一一下编码方式,即可。 byte
iOS 两次加密后与android、c#两次md5加密得到的结果不一样
笔者遇到的问题: iOS 两次加密后与android、c#两次md5加密得到的结果不一样。 一、iOS md5加密方法 1、将拿到的字符串进行utf_8编码     const char *cStr = [@“111” UTF8String]; 2、开辟一个16进制字节数组     unsigned char firstResult[16]; 3、调用系统
Java汉字md5值不一致问题
通过main方法测试得到一个加密值,通过servlet request调用得到一个加密值,都是加密相同的汉字,但是结果不同。 如果是加密英文,则不会有这种问题。 原因就在于汉字编码,在加密时设置一下编码UTF-8,问题解决。 public static String EncoderByMd5(String str) { String result = ""; MessageDige