1. MessageDigest的功能及用法
  2. MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。
  3.  
  4. MessageDigest 对象开始被初始化。该对象通过使用 update()方法处理数据。任何时候都可以调用 reset()方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用digest() 方法之一完成哈希计算。
  5.  
  6. 对于给定数量的更新数据,digest 方法只能被调用一次。在调用 digest 之后,MessageDigest 对象被重新设置成其初始状态。
  7.  
  8. 1public static MessageDigest getInstance(String algorithm)
  9. throws NoSuchAlgorithmException
  10. 返回实现指定摘要算法的 MessageDigest 对象。
  11. algorithm - 所请求算法的名称
  12. 2public static MessageDigest getInstance(String algorithm,
  13. String provider)
  14. throws NoSuchAlgorithmException,
  15. NoSuchProviderException
  16. 返回实现指定摘要算法的 MessageDigest 对象。
  17. algorithm - 所请求算法的名称
  18. provider - 提供者的名称。
  19. 3public void update(byte[] input)
  20. 使用指定的 byte 数组更新摘要。
  21. 4public byte[] digest()
  22. 通过执行诸如填充之类的最终操作完成哈希计算。在调用此方法之后,摘要被重置。
  23. 5public static boolean isEqual(byte[] digesta,
  24. byte[] digestb)
  25. 比较两个摘要的相等性。做简单的字节比较。
  26.  
  27. 注意:Provider可以通过 Java.security.Security.getProviders() 方法获取已注册提供者列表。比较常用的有“SUN
  28.  
  29. SUN提供的常用的算法名称有:MD2
  30. MD5
  31. SHA-1
  32. SHA-256
  33. SHA-384
  34. SHA-512
  35.  
  36. Code举例:
  37.  
  38. import java.security.*;
  39. public class myDigest {
  40. public static void main(String[] args) {
  41. myDigest my=new myDigest();
  42. my.testDigest();
  43. }
  44. public void testDigest()
  45. {
  46. try {
  47. String myinfo="我的测试信息";
  48. //java.security.MessageDigest alg=java.security.MessageDigest.getInstance("MD5");
  49. java.security.MessageDigest alga=java.security.MessageDigest.getInstance("SHA-1");
  50. alga.update(myinfo.getBytes());
  51. byte[] digesta=alga.digest();
  52. System.out.println("本信息摘要是:"+byte2hex(digesta));
  53. //通过某中方式传给其他人你的信息(myinfo)和摘要(digesta) 对方可以判断是否更改或传输正常
  54. java.security.MessageDigest algb=java.security.MessageDigest.getInstance("SHA-1");
  55. algb.update(myinfo.getBytes());
  56. if (algb.isEqual(digesta,algb.digest())) {
  57. System.out.println("信息检查正常");
  58. }
  59. else
  60. {
  61. System.out.println("摘要不相同");
  62. }
  63. }
  64. catch (java.security.NoSuchAlgorithmException ex) {
  65. System.out.println("非法摘要算法");
  66. }
  67. }
  68. public String byte2hex(byte[] b) //二行制转字符串
  69. {
  70. String hs="";
  71. String stmp="";
  72. for (int n=0;n<b.length;n++)
  73. {
  74. stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
  75. if (stmp.length()==1) hs=hs+"0"+stmp;
  76. else hs=hs+stmp;
  77. if (n<b.length-1) hs=hs+":";
  78. }
  79. return hs.toUpperCase();
  80. }
  81. }

  

MessageDigest的功能及用法(加密解密)的更多相关文章

  1. 【java】安全加密MessageDigest的功能及用法【hash一致性算法】

    链接地址:https://blog.csdn.net/ma1kong/article/details/2662997 1.查看MessageDigest源码的注释说明 2.和hash一致性算法 什么关 ...

  2. MessageDigest的功能及用法

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

  3. php实现的三个常用加密解密功能函数示例

    目录 算法一: 算法二: 算法三(改进第一个加密之后的算法) 本文实例讲述了php实现的三个常用加密解密功能函数.分享给大家供大家参考,具体如下: 算法一: //加密函数 function lock_ ...

  4. php加密解密功能类

    这两天突发奇想想要用php写一个对日常项目加密以及解密的功能,经过努力简单的封装了一个对php代码进行加密解密的类,一些思想也是来自于网络,初步测试用着还行,可以实现对指定项目的加密以及解密(只针对本 ...

  5. 基于正则的INI读写工具类,支持加密解密

    看到这个标题,有人会问,现在都用xml做配置文件了,谁还用INI文件啊!下面来简单对比一下xml和ini: 1.XML功能强大表达能力强,同时扩展性好. 2.它的主要优势是异构平台的整合.通讯. 3. ...

  6. java加密-解密小结

    加密算法可以分为 双向加密(对称加密.不对称加密) 单向加密(不可逆加密)—— MD5.sha.hmac... 在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密 有: ...

  7. Cryptopp iOS 使用 RSA加密解密和签名验证签名

    Cryptopp 是一个c++写的功能完善的密码学工具,类似于openssl 官网:https://www.cryptopp.com 以下主要演示Cryptopp 在iOS上的RSA加密解密签名与验证 ...

  8. RSA加密解密及数字签名Java实现--转

    RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.当时他们三人都在麻省理工学院 ...

  9. 将 Shiro 作为一个许可为基础的应用程序 五:password加密/解密Spring应用

    考虑系统password的安全,眼下大多数系统都不会把password以明文的形式存放到数据库中. 一把会採取下面几种方式对password进行处理 password的存储 "编码" ...

随机推荐

  1. js判断数组中是否包含某个值

    /** * 判断数组中是否包含某个值 * @param arr 数组 * @param str 值 * @returns {boolean} */ function contains(arr, str ...

  2. TCP协议的三次握手、四次挥手

    TCP三次握手 TCP的连接的建立需要发送三个包,一次称为三次握手(Three-way Handshake). 三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 ...

  3. Spark中Task,Partition,RDD、节点数、Executor数、core数目的关系和Application,Driver,Job,Task,Stage理解

    梳理一下Spark中关于并发度涉及的几个概念File,Block,Split,Task,Partition,RDD以及节点数.Executor数.core数目的关系. 输入可能以多个文件的形式存储在H ...

  4. Linux+Apache下如何安装SSL证书

    最近很多站长在问linux系统平台下如何安装SSL证书?Linux+Apache下如何安装SSL证书?本文整理了关于Linux+Apache下如何安装SSL证书的相关教程供大家参考,更多SSL证书安装 ...

  5. Linux内核tracepoints

    Linux内核tracepoints 简单介绍 内核中的每个tracepoint提供一个钩子来调用probe函数. 一个tracepoint可以打开或关闭.打开时,probe函数关联到tracepoi ...

  6. html表单练习

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. javascript实现:在N个字符串中找出最长的公子串

    'use strict' module.exports = function 找出最长公子串 (...strings) { let setsOfSubstrings = [] strings.redu ...

  8. 线程同步、信号量、system v IPC

    一.线程同步 条件变量 什么是条件变量? 线程A等待某个条件成立,条件成立,线程A才继续向下执行.线程B的执行使条件成立,条件成立以后唤醒线程A,以继续执行.这个条件就是条件变量. pthread_c ...

  9. MAC下redis的安装和配置

    1.下载 打开官网:https://redis.io/ 选择下载你要的版本压缩包 2.安装 打开终端,cd - 将下载的压缩包拷贝到local目录下:sudo cp Downloads/redis-4 ...

  10. 程序包管理rpm和yum

    Linux程序包管理: API:Application Programming Interface源码包 POSIX:Portable OS 程序源代码 --> 预处理 --> 编译 -- ...