广告
返回顶部
首页 > 资讯 > 精选 >Java自带的加密类MessageDigest类代码示例
  • 262
分享到

Java自带的加密类MessageDigest类代码示例

javamessagedigest类加密类 2023-05-30 21:05:55 262人浏览 八月长安
摘要

MessageDigest 类MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。MessageDigest 对象开始被初

MessageDigest 类

MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。

MessageDigest 对象开始被初始化。该对象通过使用 update()方法处理数据。任何时候都可以调用 reset()方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用digest() 方法之一完成哈希计算。

对于给定数量的更新数据,digest 方法只能被调用一次。在调用 digest 之后,MessageDigest 对象被重新设置成其初始状态。

说明:

在网站中,为了保护网站会员的用户名和密码等隐私信息,所以我们在用户注册时就直接进行MD5方式或其他方式进行加密,即使是数据库管理员也不能查看该会员的密码等信息,在数据库中查看密码效果如:8e830882f03b2cb84d1a657f346dd41a效果。

因为MD5算法是不可逆的,所以被很多网站广泛使用。

普遍使用的三种加密方式

方式一:使用位运算符,将加密后的数据转换成16进制
方式二:使用格式化方式,将加密后的数据转换成16进制(推荐)
方式三:使用算法,将加密后的数据转换成16进制

import java.security.MessageDigest;import java.security.NoSuchAlGorithmException;public class EncryptionUtil {public static String getHash(String source, String hashType) {// 用来将字节转换成 16 进制表示的字符 char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};try {MessageDigest md = MessageDigest.getInstance(hashType);md.update(source.getBytes());// 通过使用 update 方法处理数据,使指定的 byte数组更新摘要 byte[] encryptStr = md.digest();// 获得密文完成哈希计算,产生128 位的长整数 char str[] = new char[16 * 2];// 每个字节用 16 进制表示的话,使用两个字符 int k = 0;// 表示转换结果中对应的字符位置 for (int i = 0; i < 16; i++) {// 从第一个字节开始,对每一个字节,转换成 16 进制字符的转换 byte byte0 = encryptStr[i];// 取第 i 个字节 str[k++] = hexDigits[byte0 >>> 4 & 0xf];// 取字节中高 4 位的数字转换, >>> 为逻辑右移,将符号位一起右移 str[k++] = hexDigits[byte0 & 0xf];// 取字节中低 4 位的数字转换}return new String(str);// 换后的结果转换为字符串}catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;}public static String getHash3(String source, String hashType) {StringBuilder sb = new StringBuilder();MessageDigest md5;try {md5 = MessageDigest.getInstance(hashType);md5.update(source.getBytes());for (byte b : md5.digest()) {sb.append(String.fORMat("%02X", b));// 10进制转16进制,X 表示以十六进制形式输出,02 表示不足两位前面补0输出}return sb.toString();}catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;}public static String getHash4(String source, String hashType) {// 用来将字节转换成 16 进制表示的字符 char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};StringBuilder sb = new StringBuilder();MessageDigest md5;try {md5 = MessageDigest.getInstance(hashType);md5.update(source.getBytes());byte[] encryptStr = md5.digest();for (int i = 0; i < encryptStr.length; i++) {int iRet = encryptStr[i];if (iRet < 0) {iRet += 256;}int iD1 = iRet / 16;int iD2 = iRet % 16;sb.append(hexDigits[iD1] + "" + hexDigits[iD2]);}return sb.toString();}catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;}public static void main(String[] args) {System.out.println(getHash("小奎", "MD5"));System.out.println(getHash("小奎", "SHA") + "\n");System.out.println(getHash3("小奎", "MD5"));System.out.println(getHash3("小奎", "SHA") + "\n");System.out.println(getHash4("小奎", "MD5"));System.out.println(getHash4("小奎", "SHA") + "\n");}}

--结束END--

本文标题: Java自带的加密类MessageDigest类代码示例

本文链接: https://www.lsjlt.com/news/221045.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java自带的加密类MessageDigest类代码示例
    MessageDigest 类MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。MessageDigest 对象开始被初...
    99+
    2023-05-30
    java messagedigest类 加密类
  • Java Base64 加密与解密示例代码
    目录一、Java 8 基本 Base64二、Java 8 URL 加密三、Java 8 MIME(Multipurpose Internet Mail Extensions) 加密四...
    99+
    2022-12-12
    Java Base64 加密与解密 Java Base64 加密
  • java Scanner类的使用示例代码
    Scanner类简介 Java 5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序。它是以前的StringTokenizer和Matcher类之间...
    99+
    2022-11-12
  • java&javascript自定义加密数据传输代码示例
    在开发应用过程中,客户端与服务端经常需要进行数据传输,涉及到重要隐私信息时,开发者自然会想到对其进行加密,即使传输过程中被“有心人”截取,也不会将信息泄露。对于加密算法,相信不少开发者也有所耳闻,比如MD5加密,Base64加密,DES加密...
    99+
    2023-05-30
    java 数据传输加密 avascript
  • FlutterRSA加密解密的示例代码
    目录对称加密非对称加密第一步、首先pubspec.yaml中添加依赖第二步、获取公钥私钥文件第三步、在pubspec.yaml文件中添加公钥私钥文件。第四步、实现Encrypt加密解...
    99+
    2022-11-13
  • thinkphp自带分页类的示例分析
    这篇文章给大家分享的是有关thinkphp自带分页类的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。thinkphp自带分页使用案例:$Data = ...
    99+
    2022-10-19
  • Java实现Excel文件加密解密的示例代码
    目录概述示例大纲工具Java代码示例示例1加密工作簿示例2解密工作簿示例3加密工作表示例4加密工作表指定数据范围示例5设置工作表公式隐藏示例6解密Excel工作表概述 设置excel...
    99+
    2022-11-13
  • java语言中封装类代码示例
    在面向对象程序设计方法中,封装(Encapsulation)是指一种将抽象性函式接口的实现细节部分包装‘隐藏起来的方法。数据被保护在内部,隐藏内部实现细节,对外提供接口与外部交互。使用封装的步骤将类的所有属性使用关键字private去修饰,...
    99+
    2023-05-30
  • java类加载的示例分析
    这篇文章将为大家详细讲解有关java类加载的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、说明当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过以下三个步骤对该类进行初始化。2、...
    99+
    2023-06-15
  • 国密SM2: 加解密实现 java代码完整示例
    目录  具体Java代码SM2算法加解密实现Demo: pom依赖引入 :  国家密码管理局于2010年12月17日发布了SM2算法,并要求现有的基于RSA算法的电子认证系统、密钥管理系统、应用系统进升级改造,使用支持国密SM2算法的证...
    99+
    2023-08-31
    java 算法
  • python实现希尔密码加密的示例代码
    目录原理实现原理 希尔密码是运用基本矩阵论原理的替换密码,由Lester S. Hill在1929年发明。 每个字母当作26进制数字:A=0, B=1, C=2… 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得...
    99+
    2022-06-02
    python 希尔密码加密 python 希尔密码
  • java加解密RSA使用方法代码示例
    最近为了分析一段请求流,不得不去研究一下RSA加密。首先,强调一点:密钥的“钥”读“yue”,不是“yao”,额。。。网上关于RSA的原理一抓一大把的,这里只是简单说说我的理解:1. 两个足够大的互质数p, q;2. 用于模运算的模 n=p...
    99+
    2023-05-30
    java rsa 示例
  • Java ClassLoader虚拟类实现代码热替换的示例代码
    目录总结ClassLoader 虚拟类方法实现代码热替换实现改进思考总结 类加载器是负责加载类的对象。类ClassLoader是一个抽象类。给定类的全限定类名,类加载器应尝试查找或生...
    99+
    2022-11-13
  • java类加载器的示例分析
    这篇文章给大家分享的是有关java类加载器的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布...
    99+
    2023-06-14
  • Java实现前端jsencrypt.js加密后端解密的示例代码
    目录1.什么是RSA2.RSA算法2.1 生成公钥和私钥2.2 使用公钥加密信息2.3 使用私钥解密信息4.RSA的应用:数字签名5.RSA的安全性6.为什么要写这文章7.前端代码8...
    99+
    2022-11-13
  • python实现凯撒密码加密解密的示例代码
    凯撒加密就是通过将字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移,被替换成密文。例如,当偏移量是2的时候,所有的字母B将被替换...
    99+
    2022-11-11
  • Java利用File类创建文件的示例代码
    只需要调用该类的一个方法createNewFile(),但是在实际操作中需要注意一些事项,如判断文件是否存在,以及如何向新建文件中写入数据等。 import java.io.*; p...
    99+
    2022-11-13
  • Java加密解密和数字签名完整代码示例
    常见的加密算法基本的单向加密算法:BASE64严格地说,属于编码格式,而非加密算法MD5(MessageDigestalgorithm5,信息摘要算法)SHA(SecureHashAlgorithm,安全散列算法)HMAC(HashMess...
    99+
    2023-05-30
    java 加密解密代码 数字签名
  • Java实现对称加密DES和AES的示例代码
    目录实验内容和要求参考代码实验内容和要求 采用Java实现采用对称密码算法的应用软件,所用算法包括DES算法和AES算法。要求该软件具有图形用户界面,能生成密钥,以及对字符串和文件进...
    99+
    2023-05-14
    Java实现对称加密DES AES Java对称加密DES AES Java对称加密 Java DES AES
  • SpringBoot实现api加密的示例代码
    目录SpringBoot的API加密对接项目介绍什么是RSA加密加密实战实战准备真刀真枪解密实战实战准备真刀真枪总结项目坑点SpringBoot的API加密对接 在项目中,为了保证数...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作