Android与C后台 MD5加密不一致的问题

最近换了个比较扯淡的C后台,登录密码MD5加密想必大家都用到了,网上一大堆代码,联调时发现问题了,操蛋的密码和C后台不一致,C后台的MD5密码高位不补0,网上大部分都是补零的,凑够32位,问题由此而来!
直接上代码吧:

  /**
         * 通过MD5算法加密;
         * @param pwd
         */
        private static String encoder(String pwd) {
            try {

                //1指定算法类型;
                MessageDigest digest =MessageDigest.getInstance("MD5");
                //2将需要加密的字符串转换成byte数组;
                //注意我们后台编码时Unicode,此处编码根据后台编码走
                byte[] bs = digest.digest(pwd.getBytes("UTF-16LE"));
                //3通过遍历bs 生成32位的字符串;

                //最后字符串有个拼接的过程;
                StringBuffer sb =new StringBuffer();
                for (byte b : bs) {
                    int i=b&0xff; //int 类型的i 是4个字节占32位;
                    //int 类型的i转换成16进制字符;
                    String hexString = Integer.toHexString(i);
//                  if (hexString.length()<2) {//补零的过程,因为生成的时候有的是一位有的是两位所以需要有个补零的过程;
//                      hexString="0"+hexString;
//                  }
                    sb.append(hexString);
                }

                return sb.toString() ;

            } catch ( Exception e) {//找不到指定算法的错误;
                // TODO Auto-generated catch block
                e.printStackTrace();
                return "";
            }


        }

测试代码如下:

public static void main(String[] args)  {
//      /.a@b,c;
            String s = "123456.a@b,c;";
            String test1 =encoder( s);
            System.err.println("dd=" + test1);
            System.err.println("ee="+ "83c699114729d7d168e748b52882f31");
          System.out.println(test1.equals("83c699114729d7d168e748b52882f31")); 

          System.err.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
          String s1="*)897+-=_}{|\"/.'p]lhlKGHdf1453..a@b,c;";
          String test2 =encoder( s1);
            System.err.println("dd=" + test2);
            System.err.println("ee="+ "832179b8eae58adbe5824c7d41a9f778");
          System.out.println(test2.equals("832179b8eae58adbe5824c7d41a9f778")); 

          System.err.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
          String s3="中文12~5)/-.a@b,c;";
          String test3 =encoder( s3);
          System.err.println("dd=" + test3);
          System.err.println("ee="+ "4c195f467e7238d58bffdcf9ae9074");
          System.out.println(test3.equals("4c195f467e7238d58bffdcf9ae9074")); 

        }

看下输出:
这里写图片描述
正常了,天下太平!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
App相关→AppUtils.java 安装App installApp 卸载指定包名的App uninstallApp 获取当前App信息 getAppInfo 获取所有已安装App信息 getAllAppsInfo 根据包名判断App是否安装 isInstallApp 打开指定包名的App openAppByPackageName 打开指定包名的App应用信息界面 openAppInfo 可用来做App信息分享 shareAppInfo 判断当前App处于前台还是后台 isAppBackground 常量相关→ConstUtils.java 存储相关常量 时间相关常量 正则相关常量 转换相关→ConvertUtils.java→Test 每1个byte转为2个hex字符 bytes2HexString 每2个hex字符转为1个byte hexString2Bytes charArr转byteArr chars2Bytes byteArr转charArr bytes2Chars 设备相关→DeviceUtils.java 获取设备MAC地址 getMacAddress 获取设备厂商,如Xiaomi getManufacturer 获取设备型号,如MI2SC getModel 编码解码相关→EncodeUtils.java→Test URL编码 urlEncode URL解码 urlDecode Base64编码 base64Encode base64Encode2String Base64解码 base64Decode Base64URL安全编码 base64UrlSafeEncode Html编码 htmlEncode Html解码 htmlDecode 加密解密相关→EncryptUtils.java→Test MD2加密 encryptMD2ToString encryptMD2 MD5加密 encryptMD5ToString encryptMD5 SHA1加密 encryptSHA1ToString encryptSHA1 SHA224加密 encryptSHA224ToString encryptSHA224 SHA256加密 encryptSHA256ToString encryptSHA256 SHA384加密 encryptSHA384ToString encryptSHA384 SHA512加密 encryptSHA512ToString encryptSHA512 获取文件的MD5校验码 encryptMD5File2String encryptMD5File DES加密后转为Base64编码 encryptDES2Base64 DES加密后转为16进制 encryptDES2HexString DES加密 encryptDES DES解密Base64编码密文 decryptBase64DES DES解密16进制密文 decryptHexStringDES DES解密 decryptDES 3DES加密后转为Base64编码 encrypt3DES2Base64 3DES加密后转为16进制 encrypt3DES2HexString 3DES加密 encrypt3DES 3DES解密Base64编码密文 decryptBase64_3DES 3DES解密16进制密文 decryptHexString3DES 3DES解密 decrypt3DES AES加密后转为Base64编码 encryptAES2Base64 AES加密后转为16进制 encryptAES2HexString AES加密 encryptAES AES解密Base64编码密文 decryptBase64AES AES解密16进制密文 decryptHexStringAES AES解密 decryptAES 文件相关→FileUtils.java→Test 根据文件路径获取文件 getFileByPath 判断文件是否存在 isFileExists 判断是否是目录 isDir 判断是否是文件 isFile 判断目录是否存在,不存在则判断是否创建成功 createOrExistsDir 判断文件是否存在,不存在则判断是否创建成功 createOrExistsFile 判断文件是否存在,存在则在创建之前删除 createFileByDeleteOldFile 复制目录 copyDir 复制文件 copyFile 移动目录 moveDir 移动文件 moveFile 删除目录 deleteDir 删除文件 deleteFile 获取目录下所有文件 listFilesInDir 获取目录下所有文件包括子目录 listFilesIn

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值