Golang MD5算法与 java(android)的互通

对MD5加密来说,惟一要注意的就是加密完的Base64加密后,Android使用自己的标准util库时,一定要设置无填充方式,加密结果转成base64。如下所示:

  1. java
  MessageDigest md5 = null;
        try {
            md5 = MessageDigest.getInstance("MD5");
            md5.update(val.getBytes());
            byte[] m = md5.digest();//加密
           // BASE64Encoder encoder = new BASE64Encoder();
            //血坑!!!!!!!!!!!!!
           return Base64.encodeToString(m,Base64.NO_WRAP);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
  1. go
func MD5(src string)(string)  {
    md5Ctx := md5.New()
    md5Ctx.Write([]byte(src))
    cipherStr := md5Ctx.Sum(nil)
    fmt.Print(cipherStr)
    return base64.StdEncoding.EncodeToString(cipherStr)
}

Android使用md5加密后,再用android标准的Base64加密后,最后会多一个换行符,我的处理方法是,Base64.encodeToString(m,Base64.NO_WRAP); 设置不填充可以解决上述问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 之前一直对加密相关的算法知之甚少,只知道类似DES、RSA等加密算法能对数据传输进行加密,且各种加密算法各有...
    Henryzhu阅读 3,067评论 0 14
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,087评论 19 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,660评论 0 17
  • /**ios常见的几种加密方法: 普通的加密方法是讲密码进行加密后保存到用户偏好设置( [NSUserDefaul...
    彬至睢阳阅读 3,052评论 0 7