md5加密

java实现md5加密

巧了我就是萌 提交于 2020-01-03 16:38:14
java实现md5加密 MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的 Ronald L. Rivest 开发出来,经MD2、MD3和MD4发展而来。 一.使用md5加密密码 我们先用java去实现md5加密密码,再去研究一下md5的原理以及他的优缺点。 1.新建MD5.java文件 package com.creditease.bixin.common.util; import sun.misc.BASE64Encoder; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * Created by hengyang4 on 2018/6/15. */ public class MD5 { /* * 使用md5进行加密 * * */ public String EncodeByMd5(String str) throws NoSuchAlgorithmException

JAVA中简单的MD5加密类(MD5Utils)

拜拜、爱过 提交于 2020-01-02 23:17:10
本文转载自: https://www.cnblogs.com/cqy1183344265/p/5851456.html 作者:CQY1183344265 转载请注明该声明。 MD5加密分析: JDK API: 获取对象的API: 加密的API: 1 package cn.utils; 2 3 import java .security.MessageDigest; 4 import java.security.NoSuchAlgorithmException; 5 6 /** 7 * @author CQY13 MD5加密工具类 8 */ 9 public class MD5Utils { 10 11 /** 12 * 获取MD5加密 13 * 14 * @param pwd 15 * 需要加密的字符串 16 * @return String字符串 加密后的字符串 17 */ 18 public static String getPwd(String pwd) { 19 try { 20 // 创建加密对象 21 MessageDigest digest = MessageDigest.getInstance("md5" ); 22 23 // 调用加密对象的方法,加密的动作已经完成 24 byte [] bs = digest.digest(pwd.getBytes()); 25

MD5加密

拟墨画扇 提交于 2020-01-02 14:21:04
前言: 为了数据安全经常会使用到加密技术,今天小编这篇博客讲的是MD5,所写并非很精,写的不对之处可提出,小编定会改正,希望小编写的这篇文章能够帮助小伙伴们有个初步印象。 MD5 实质上是一种哈希算法。主要用于对于密码的加密,在网页上输入密码等,直接操作密码肯定是不安全的,一般是进行MD5加密后再保存以及传输,而且 MD5加密是不可逆的,所以即使是能够看到数据库的人员也不能看到原始密码。 其中MD5的概念引用自: https://blog.csdn.net/lspq35k7o5aj21l1h9o/article/details/81073726 通常情况下,在进行登录操作的时候,用户输入正确的密码,后端通过用户输入的密码将其转换成MD5加密值,将其与数据库中的MD5加密值进行对比,如果一致说明输入的密码正确,不一致则为错误。 现在百度搜索MD5加密,其实还是有很多线上加密解密的工具,小编之前看别的博客说是所谓的解密,其实就是要维护一个庞大的数据库,将一些常用的密码加密,一一拼配,将匹配的密码返回。 MD5加密解密方法 package com.test.util; import java.security.MessageDigest; /** * @Author tanghh * @Date 2020/1/2 10:04 */ public class MD5Util {

jQuery MD5加密

≡放荡痞女 提交于 2019-12-31 15:26:50
有时候我们想在js里面使用加密,jQuery就提供了这样的插件,用法十分简单: $(md("你想要加密的字符串")); md5插件下载地址: http://plugins.jquery.com/project/md5 下面是我的简单例子 代码 <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < html xmlns ="http://www.w3.org/1999/xhtml" > < head > < title ></ title > < script type ="text/javascript" src ="Scripts/jquery-1.3.2.min.js" ></ script > < script type ="text/javascript" src ="Scripts/jquery.md5.js" ></ script > < script type ="text/javascript" > alert($.md5( " Hello " )); </ script > </ head > < body > </ body > </ html > 来源: https

模块 hashlib 加密 签名 防篡改

淺唱寂寞╮ 提交于 2019-12-30 19:26:14
hashlib 模块 加密算法: hash (152位)散列 哈希 不可逆得 密码背后就是 hash 程序退出hash 值就变了 ,hash值得结果有可能重复 MD5 (128位) 讯息摘要演算法 基于哈希得 一种加密算法 可产生128位得散列值 (hash value) 永远都不会变 MD5功能: 1.输入任意长度的信息,经过处理,输出为128位的信息(数字指纹); 2.不同的输入得到的不同的结果(唯一性); MD5算法的特点: 压缩性:任意长度的数据,算出的MD5值的长度都是固定的 容易计算:从原数据计算出MD5值很容易 抗修改性:对原数据进行任何改动,修改一个字节生成的MD5值区别也会很大 强抗碰撞:已知原数据和MD5,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。 MD5不可逆的原因是其是一种散列函数,使用的是hash算法,在计算过程中原文的部分信息是丢失了的。 MD5用途: 1.防止被篡改: 比如发送一个电子文档,发送前,我先得到MD5的输出结果a。然后在对方收到电子文档后,对方也得到一个MD5的输出结果b。如果a与b一样就代表中途未被篡改。 比如我提供文件下载,为了防止不法分子在安装程序中添加木马,我可以在网站上公布由安装文件得到的MD5输出结果。 SVN在检测文件是否在CheckOut后被修改过,也是用到了MD5. 2.防止直接看到明文:

python的hashlib模块

核能气质少年 提交于 2019-12-26 07:05:15
一、hashlib基本使用   python中的hashlib模块用来进行hash或者md5加密,而且这种加密是不可逆的,所以这种算法又被称为摘要算法。其支持Openssl库提供的所有算法,包括md5、sha1、sha224、sha256、sha512等。 常用的属性和方法: algorithms:列出所有加密算法('md5','sha1','sha224','sha256','sha384','sha512') digesti_size:产生的散列的字节大小 md5()/sha1():创建一个md5或者sha1加密模式的hash对象 update(arg):用字符串参数来更新hash对象,如果同一个has对象重复调用该方法,如下:m.update(a); m.update(b),则等于m.update(a+b) digest():返回摘要,作为二进制数据字符串值 hexdigest():返回摘要,作为十六进制数据字符串值 copy():复制 下面是一个简单的加密示例: import hashlib m = hashlib.md5() m.update('how to use md5'.encode('utf-8')) m.update('in python hashlib'.encode('utf-8')) print m.hexdigest() 返回值如下:

加密解密帮助类

故事扮演 提交于 2019-12-26 01:48:50
二进制数据的序列化反序列化和Json的序列化反序列化的重要区别   前言:最近一个一个很奇怪的问题,很明白的说,就是没看懂,参照下面的代码: /// <summary> /// 反序列化对象 /// </summary> /// <typeparam name="T">指定对象类型</typeparam> /// <param name="data">字节数组</param> /// <param name="isClearData">压缩完成后,是否清除待压缩字节数组里面的内容</param> /// <returns>指定类型的对象</returns> public static T DeserializeByBytes<T>(byte[] data, bool isClearData = true) { T t = default(T); if (data == null) return t; try { BinaryFormatter formatter = new BinaryFormatter(); using (MemoryStream ms = new MemoryStream(data)) { t = (T)formatter.Deserialize(ms); } formatter = null; if (isClearData) Array.Clear

Shiro——MD5加密

混江龙づ霸主 提交于 2019-12-24 17:56:12
一、shiro默认密码的比对 通过 AuthenticatingRealm 的 credentialsMatcher 属性来进行的密码的比对 /**源码org.apache.shiro.realm.AuthenticatingRealm * Asserts that the submitted {@code AuthenticationToken}'s credentials match the stored account * {@code AuthenticationInfo}'s credentials, and if not, throws an {@link AuthenticationException}. * * @param token the submitted authentication token * @param info the AuthenticationInfo corresponding to the given {@code token} * @throws AuthenticationException if the token's credentials do not match the stored account credentials. */ protected void assertCredentialsMatch

MD5加密的思考

ぐ巨炮叔叔 提交于 2019-12-24 12:00:34
一、 MD5加密原理 MD5算法的过程分为四步:处理原文,设置初始值,循环加工,拼接结果。 第一步:处理原文 首先,我们计算出原文长度(bit)对512求余的结果,如果不等于448,就需要填充原文使得原文对512求余的结果等于448。填充的方法是第一位填充1,其余位填充0。填充完后,信息的长度就是512*N+448。 之后,用剩余的位置(512-448=64位)记录原文的真正长度,把长度的二进制值补在最后。这样处理后的信息长度就是512*(N+1)。 第二步:设置初始值 MD5的哈希结果长度为128位,按每32位分成一组共4组。这4组结果是由4个初始值A、B、C、D经过不断演变得到。MD5的官方实现中,A、B、C、D的初始值如下(16进制): A=0x01234567 B=0x89ABCDEF C=0xFEDCBA98 D=0x76543210 第三步:循环加工 这一步是最复杂的一步,我们看看下面这张图,此图代表了单次A,B,C,D值演变的流程。 图中,A,B,C,D就是哈希值的四个分组。每一次循环都会让旧的ABCD产生新的ABCD。一共进行多少次循环呢?由处理后的原文长度决定。 假设处理后的原文长度是M 主循环次数 = M / 512 每个主循环中包含 512 / 32 * 4 = 64 次 子循环。 上面这张图所表达的就是单次子循环的流程。 下面对图中其他元素一一解释: 1

Java加密的几种方式

℡╲_俬逩灬. 提交于 2019-12-23 18:11:27
Java常用的加密方式 1.BASE64 严格来说BASE64不算是加密,而是对其编码格式进行修改,使之变为不易被人识别的形式。在实际使用中,将密码加密并储存到数据库中,登录时取出存储的密码,进行解密 /** * @author Myriven * @date 2019/12/23 14:23 * @description */ /*BASE564加密*/ public class BASE64Demo { public static void main ( String [ ] args ) throws IOException { String broforePWD = "password" ; System . out . println ( "加密前:" + broforePWD ) ; String afterPWD = encryptBASE64 ( broforePWD . getBytes ( ) ) ; System . out . println ( "加密后:" + afterPWD ) ; byte [ ] bytes = decryptBASE64 ( afterPWD ) ; System . out . println ( "解密后:" + new String ( bytes ) ) ; } /*加密*/ public static String