MD5 几种方法的选择

article/2025/9/23 18:32:08

转:http://zoroeye.iteye.com/blog/2026984?utm_source=tuicool&utm_medium=referral

md5加密实现方法有很多种,也导致很难选择。大概分析下自己了解的一些用法。 

1.sun官方 
sun提供了MessageDigest和BASE64Encoder可以用指定算法加密。 
例: 

Java代码   收藏代码
  1. public static final String EncoderPwdByMd5(String str) throws                    NoSuchAlgorithmException,UnsupportedEncodingException  
  2.     {  
  3.         // 确定计算方法  
  4.         MessageDigest md5 = MessageDigest.getInstance("MD5");  
  5.         BASE64Encoder base64en = new BASE64Encoder();  
  6.         // 加密后的字符串,注意一定要自己指定编码,否则会取系统默认。不同系统会不一致。  
  7.         String newstr = base64en.encode(md5.digest(str.getBytes("utf-8")));  
  8.         return newstr;  
  9.     }  


分析:  
1)BASE64Encoder是不建议使用的,引入有时候也会报错: 
Access restriction: The type BASE64Encoder is not accessible due to restriction on required library C:\Program files\java\jdk1.6\jre\lib\rt.jar 
oracle官方有文档说明(Why Developers Should Not Write Programs That Call 'sun' Packages),sun.*下面的类不建议使用: 
http://www.oracle.com/technetwork/java/faq-sun-packages-142232.html  

但也有两种规避办法。 
方法一:  
1. Open project properties. 
2. Select Java Build Path node. 
3. Select Libraries tab. 
4. Remove JRE System Library. 
5. Add Library JRE System Library. 

方法二:  
Go to Window-->Preferences-->Java-->Compiler-->Error/Warnings. 
Select Deprecated and Restricted API. Change it to warning. 
Change forbidden and Discouraged Reference and change it to warning. (or as your need.) 

另外:  
使用MessageDigest不使用BASE64Encoder也可以实现md5加密,但要自己实现md5算法, 
比较麻烦。可以参考: 
http://blog.csdn.net/xiao__gui/article/details/8148203http://blog.csdn.net/xiao__gui/article/details/8148203  
http://wenku.baidu.com/link?url=pgf96g_dt2r2vEE88RG7jqMaW3PCSmxL_3sEBwbNb4EzLalQnb-hUsAB1bnqotbAlCDTT60WvFdS0hn9QTeSJAUtahDgpWE9Z_S-yM8Y6-a  

2.sun官方和第三方结合  
也可以使用MessageDigest 加第三方apache commons-codec的支持: 
Java代码   收藏代码
  1. final MessageDigest messageDigest = MessageDigest.getInstance("MD5");  
  2. messageDigest.reset();  
  3. messageDigest.update(string.getBytes(Charset.forName("UTF8")));  
  4. final byte[] resultByte = messageDigest.digest();  
  5. String result = Hex.encodeHexString(resultByte);  


注意:  
以上两种方法都使用了MessageDigest, 需要特别强调:MessageDigest线程不安全 。 The MessageDigest classes are NOT thread safe. If they're going to be used by different threads, just create a new one, instead of trying to reuse them. 

3.使用第三方工具包  
很多第三方工具都提供了md5,sha等加密方法。apache,google等都提供了工具包。 

3.1 apache的commons-codec  
1)maven配置(现在的版本有很多,选择自己需要的): 
        <dependency> 
            <groupId>commons-codec</groupId> 
            <artifactId>commons-codec</artifactId> 
            <version>1.6</version> 
        </dependency> 
2)引入包后: 
Java代码   收藏代码
  1. public static String encodeMD5Hex(String data)  
  2.     {  
  3.         return DigestUtils.md5Hex(data);  
  4.     }  

并且该方法是线程安全的。  

3.2 google的guava  
Apache Common是一个时间比较久的框架了,Google针对基础框架退出了自己的类库,并且开源出来(http://code.google.com/p/guava-libraries/),名为“Guava”。它在部分功能上其实是ApacheCommon的一个子集,但在性能上做了很多优化,并且针对并发和大规模系统开发做了很多新的策略(如CopyOnWrite、Immutable、SkipList)等。虽然有些类和java.util.concurrent有些重叠,但是在一般环境下都可以替代。 

md5示例: 
Java代码   收藏代码
  1. Hasher hasher = Hashing.md5().newHasher();  
  2. hasher.putString("my string");  
  3. byte[] md5 = hasher.hash().asBytes();  

既方便又安全。 
此外,其他组织或公司也有对外提供的工具类,额。。还不清楚。 

综上,从使用方便和安全性,性能等考虑,优先选择还是第三方的工具包。  


http://chatgpt.dhexx.cn/article/dUr5CHAf.shtml

相关文章

MD5是什么?及其它的特点

比较官方的解释大家可以百度&#xff0c;这里我说一下自己的理解。 一.作用&#xff1a;一般用于互联网一种数据的唯一性标识。 二.实体&#xff1a;本身是一个128位的0/1比特。一般被表示为16进制的字符串。4个比特位组成一个16进制字符&#xff0c;因此常常能见到的是&#…

抓强势股MACD大牛启动通达信指标公式 无未来 不加密

快速抓黑马强势股 好股不错过 利润翻倍的好指标 本指标能帮您快速缩小选股范围&#xff0c;紧盯信号&#xff0c;结合主力资金和主力活跃度来综合判断个股买点机会&#xff0c;强势个股精选&#xff0c;结合指标信号能快速参与强势个股回踩操作机会&#xff0c;买点更…

MD5 加密

什么是MD5算法 MD5 信息摘要演算法&#xff08;Message-Digest Algorithm&#xff09;&#xff0c;一种被广泛使用的密码杂凑函数&#xff0c;可以产生出一个128位元&#xff08;16位元组&#xff09;的散列值&#xff08;hash value&#xff09;&#xff0c;用于确保信息传输…

MD5算法详解

0x00 前言 MD5是一种哈希算法&#xff0c;用来保证信息的完整性。 就一段信息对应一个哈希值&#xff0c;且不能通过哈希值推出这段信息&#xff0c;而且还需要保证不存在任意两段不相同的信息对应同一个哈希值。不过MD5算法算出来的值也就16个字节&#xff08;16*8128&#x…

跟庄买股票得新技巧(2023.05.16)(绝密资料,只发一次)

昨天学了一个跟庄买卖股票的得新技能 统计昨天庄家异动的情况&#xff0c;按照行业分类&#xff08;板块&#xff09;板块对涨幅进行排序&#xff0c;涨幅排名分前三的是&#xff0c;龙头一&#xff0c;龙头二&#xff0c;龙头三买卖规则&#xff1a;看龙一&#xff0c;玩龙二…

股票策略 —— 指数择时 + 因子选股1

1、概述 我们希望建立一个择时策略 因子选股的复合策略&#xff0c;因为指数择时无法直接落地&#xff0c;而单纯的因子选股策略&#xff0c;回撤太大。本贴观察其效果。 2、策略规则 1、大盘指数择时&#xff0c;有持仓信号时&#xff0c;采用某量价因子筛选指数成份股&am…

md5加密算法

md5是什么&#xff1f; md5是一种信息摘要算法&#xff08;message-digest algorithm 5 &#xff09;&#xff0c;一种被广泛使用的密码散列函数&#xff0c;可以产生出一个128位&#xff08;16字节&#xff09;的散列值&#xff0c;用来确保信息传输完整一致性。 特点 不可逆 …

bat表白脚本(变色桃心+vbs问答)

今天520,女朋友在抖音上看人家一个html代码就可以实现非常炫酷的表白效果,真是外行看热闹,内行看笑话!!! 殊不知html代码是引用的本地.js等各种文件才能完成,对于非前端开发人员来说想写成很难。 本人分享两个非常简单的表白编辑代码(bat+vbs) 一、bat 效果(变色桃…

表白代码

vbs脚本表白代码 代码一、做我女朋友非同意不可 msgbox ("我有一件事想跟你说"),vbQuestion,("在吗&#xff1f;") msgbox ("自从第一天遇见你&#xff0c;我便对你难以忘怀了&#xff01;") msgbox ("做我女朋友好吗&#xff1f;")…

抖音java表白教程_抖音vbs表白代码制作方法分享

抖音vbs表白代码在整个制作教程需要对代码的写入有一定的认知&#xff0c;对于具体的教程内容&#xff0c;下面一起来看看相关的介绍吧。 抖音vbs表白代码制作教程 步骤一&#xff1a; 在电脑上新建一个txt文件。 步骤二&#xff1a; 打开txt文件&#xff0c;复制以下代码粘贴进…

抖音记事本代码html,抖音记事本vbs弹窗表白代码怎么弄的?附教程

抖音记事本vbs弹窗表白代码怎么弄的&#xff1f;附教程 2018-06-20 10:14:07 来源&#xff1a;cr173.com 扫码可以&#xff1a; 1.在手机上浏览 2.分享给微信好友或朋友圈 摘要&#xff1a; 抖音上有很多新奇的玩法&#xff0c;比如最近就很火的就是利用弹窗表白噢! 抖音上有很…

html表白树代码程序怎么调,抖音表白弹窗vbs代码怎么制作 表白树特效程序代码教程详细介绍...

最近抖音上面很火的一个vbs的表白代码玩法很流行&#xff0c;这算是技术宅专用表白方式了&#xff0c;想要跟自己喜欢的人表白的小伙伴们快来看看了。下面小编给大家分享一下抖音表白弹窗代码。 两个代码例子分享给各位&#xff1a; 1.msgbox(“做我女朋友好吗?\") msgbo…

java整人代码大全_整人代码vbs大全分享

整人代码vbs大全分享 vbs制作方法 1、在记事本中粘贴vbs代码; 2、另存为vbs文件,双击即可运行。 以下是分享的一些代码 重要提示:关机和死机的代码自己玩玩就可以了,发给别人实在有点缺德,万一别人有重要的东西没保存自己可能要负相应的后果。 一、做我女朋友吗,告白(抖音…

简单制作vbs 对话框表白

右击桌面新建一个文本文档输入&#xff1a;msgbox("做我女朋友好吗&#xff1f;") msgbox("房产证写你名字...") msgbox("保大") msgbox("我妈会游泳") Xmsgbox("做我女朋友好不好",VBOKCancel) if xVBOK then msgbox("…

抖音快手vbs表白代码大全(操作方法)

抖音快手vbs表白代码大全使用方法 前言步骤一&#xff1a;步骤二&#xff1a;步骤三、步骤四、注意事项 总结 前言 作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具。 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、…

VBS表白代码以及一些注意事项

第一步&#xff1a;新建一个文本文档 第二步&#xff1a;命名为&#xff1a;表白代码.txt 第三步&#xff1a;输入一下代码&#xff1a; msgbox("做我女朋友好吗&#xff1f;") msgbox("房子写你的名字") msgbox("保大") msgbox("我妈妈会…

【欢迎白嫖】新·vbs表白代码

新vbs表白代码 前言 之前有在B站上发布过一个表白代码的视频&#xff0c;但是貌似Bug多的让人心痛&#xff0c;所以&#xff0c;今天返璞归真&#xff0c;重新做了一个表白代码&#xff0c;欢迎各位批评指正&#xff01; 分析问题 对于上一版的代码&#xff0c;我总结出了以…

java整人的代码_「vbs代码」vbs表白代码+整人代码,抖音vbscript表白代码 - seo实验室...

vbs代码 步骤一&#xff1a; 在电脑上新建一个txt文件 步骤二&#xff1a;将以下代码复制过去(中文可以改) const title “爱情测试” const yourname “嫦娥” const question “你最喜欢的人是谁&#xff1f;请在下面的方框中输入他(她)的名字。” const info “你在说谎…

抖音txt表白html,抖音vbs表白代码的技巧分享

今天小编分享一篇关于抖音vbs表白代码的技巧&#xff0c;有兴趣的可以来了解了解看看哦。 抖音vbs表白代码的技巧分享 抖音vbs表白代码制作教程 步骤一&#xff1a; 在电脑上新建一个txt文件。 步骤二&#xff1a; 打开txt文件&#xff0c;复制以下代码粘贴进去(可以修改中文部…

html自动增加vbs代码,vbs烟花代码

比如关机代码.和一些常用代码 首先在电脑鼠标右键 新建一个文本文档。 然后点开文本文档进行编辑,最重要的一个代码就是msgbox,然后在后面添加想要说的话,但是要使用英文标点符号,换行时候都需要在前面加上代码,最后保存。 我不要整人什么的,我要的是类似翻译的,还有句型…