常见的加密和解密算法—MD5

一、MD5加密概述

Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3MD4

MD5算法具有以下特点:

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1RIPEMD以及Haval等。

MD5 是非对称的加密算法(PS:对称加密就是加密用的密码和解密用的密码是一样的,非对称就是加密和解密用的密钥不一样)

参考连接:MD5加密

二、Java实现MD5加密解密

1、maven 引入apache的jar(不是maven项目,去网上下一个jar手动引入)

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.3.2</version>
            </dependency>

2、MD5使用代码

package com.jd.test;

import org.apache.commons.codec.digest.DigestUtils;

import java.security.MessageDigest;

/**
 * MD5通用类
 *
 * @author 浩令天下
 * @since 2017.04.15
 * @version 1.0.0_1
 *
 */
public class MD5 {
    /**
     * MD5方法
     *
     * @param text 明文
     * @param key 密钥
     * @return 密文
     * @throws Exception
     */
    public static String md5(String text, String key) throws Exception {
        //加密后的字符串
        String encodeStr=DigestUtils.md5Hex(text + key);
        System.out.println("MD5加密后的字符串为:encodeStr="+encodeStr);
        return encodeStr;
        }

    /**
     * MD5验证方法
     *
     * @param text 明文
     * @param key 密钥
     * @param md5 密文
     * @return true/false
     * @throws Exception
     */
    public static boolean verify(String text, String key, String md5) throws Exception {
        //根据传入的密钥进行验证
        String md5Text = md5(text, key);
        if(md5Text.equalsIgnoreCase(md5))
        {
            System.out.println("MD5验证通过");
            return true;
        }

            return false;
    }
}

常见加密工具参考链接:

1、常见的加密和解密算法—MD5

2、常见的加密和解密算法—BASE64

3、常见的加密和解密算法—DES

4、常见的加密和解密算法—AES

时间: 2024-10-05 21:41:39

常见的加密和解密算法—MD5的相关文章

常见的加密和解密算法—AES

一.AES加密概述 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准.2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一. Rijndae

常见的加密和解密算法—BASE64

一.BASE64加密和解密概述 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,Base64编码可用于在HTTP环境下传递较长的标识信息.例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数.在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式.此时,采用Base64编码具有不可读性,

常见的加密和解密算法—DES

一.DES加密概述 DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来.需要注意的是,在某些文献中,作为算法的DES称为数据加密算法(Data Encryption Algorithm,DEA),已与作为标准的DES区分开来. DES入口参数 DES算法的入口参数有三个:Key.Data.Mode.其中Key为

一次一密加密、解密算法

1. 一次一密加密.解密算法 一次一密密码系统的一个重要特性是密钥K为一个真随机序列,且密钥只使用一次. 下面通过计算机的伪随机函数产生的随机序列作为密钥来简单演示一次一密的加密解密算法,代码示例如下: /** * 一次一密加密.解密算法 * @param str 明文(密文) * @param key 密钥 * @return 密文(明文) */ static char[] bitcode(char[] str, char[] key){ int len,i; char[] wen; len

c++实现加密和解密算法以及JNI技术的应用实例

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

替换加密、解密算法

替换加密解密算法方案的起源可以追溯到凯撒(Caesar)时代,据说凯撒为了保障情报的可靠性而发明了凯撒密码.凯撒密码是一种简单的置换密码,在加密时,字母表中的每个字母都用其后的第三个字母表示,例如,a用d表示,b用e表示,.......在解密时,只需要执行逆过程即可. 1. 替换加密.解密算法 随这历史的发展,替换密码算法方案已具有很多种形式,主要有以下几种: 单表代替密码算法方案 同音代替密码算法方案 多表代替密码算法方案 多字母组代替密码算法方案 下面以单表代替密码算法方案为例进行介绍. 1

位加密、解密算法

位加密解密算法即将明文信息转化为二进制数据,然后对这些二进制位进行加密便得到密文.位加密算法依托于计算机的强大的位处理能力,在实际应用中非常流行.现代密码学中的很多加密.解密算法方案都依赖于位加密.解密思路,例如,非常流行的序列密码方案. 1. 位加密.解密算法 在java语言中,提供了6种位运算符,如下表所示.在密码学中,可以根据需要来选择合适的位运算符进行加密.解密.一般来说,使用异或运算要比较方便. 位运算 名称 & 按位与(AND) | 按位或(OR) ^ 按位异或(XOR) ~ 取反(

JAVA实现AES的加密和解密算法

原文 JAVA实现AES的加密和解密算法 import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /** * AES 是一种可逆加密算法,对用户的敏感信息加密处理 * 对原始数据进行AES加密后,在进行Base6

换位加密、解密算法

换位密码算法方案,又称为置换加密方案,其根据一定的规则重新安排明文字母,使之成为密文.换位密码是最简单的密码学算法. 1. 换位加密.解密算法 换位加密解密的算法有很多种,这里介绍基于二维数组移位的换位加密.解密算法.二维数组移位的换位加密.解密算法即将明文字符串按照一个给定的顺序保存在二维数组中,然后按照另外一个顺序读出,便的到密文.执行相反的过程便可以恢复出明文. 1)换位加密算法 基于二维数组移位的加密算法的操作步骤如下: (1)给定一个二维数组的列数,即该二维数组每行可以保存的字符个数.