java加密枝术深入理解

 更新时间:2012年11月30日 09:32:48   作者:  
java.security包中的MessageDigest类提供了计算消息摘要的方法,本文将详细介绍,需要了解的朋友可以参考下
★ 编程思路
java.security包中的MessageDigest类提供了计算消息摘要的方法, 首先生成对象,执行其update( )方法可以将原始数据传递给该对象,然后执行其digest( )方法即可得到消息摘要。具体步骤如下:
(1)生成MessageDigest对象
MessageDigest m=MessageDigest.getInstance("MD5");
分析:和2.2.1小节的KeyGenerator类一样。MessageDigest类也是一个工厂类,其构造器是受保护的,不允许
直接使用new MessageDigist( )来创建对象,而必须通过其静态方法getInstance( )生成MessageDigest对象。
其中传入的参数指定计算消息摘要所使用的算法,常用的有"MD5","SHA"等。若对MD5算法的细节感兴趣可参考
http://www.gztarena.com/rfc1321.txt。
(2)传入需要计算的字符串
m.update(x.getBytes("UTF8" ));
分析:x为需要计算的字符串,update传入的参数是字节类型或字节类型数组,对于字符串,需要先使用
getBytes( )方法生成字符串数组。
(3)计算消息摘要
byte s[ ]=m.digest( );
分析:执行MessageDigest对象的digest( 广州达内java)方法完成计算,计算的结果通过字节类型的数组返回。
(4)处理计算结果
必要的话可以使用如下代码将计算结果s转换为字符串。
复制代码 代码如下:

String result="";
for (int i=0; i
result+=Integer.toHexString((0x000000ff & s) | 0xffffff00)。substring(6);
}

★代码与分析
完整程序如下:
复制代码 代码如下:

import java.security.*;
public class DigestPass{
public static void main(String args[ ]) throws Exception{
String x=args[0];
MessageDigest m=MessageDigest.getInstance("MD5");
m.update(x.getBytes("UTF8"));
byte s[ ]=m.digest( );
String result="";
for (int i=0; i
result+=Integer.toHexString((0x000000ff & s) | 0xffffff00)。substring(6);
}
System.out.println(result);
}
}

★运行程序
输入java DigestCalc abc来运行程序,其中命令行参数abc是原始数据,屏幕输出计算后的消息摘要:
900150983cd24fb0d6963f7d28e17f72。

相关文章

  • 如何解决Spring MVC中响应乱码问题

    如何解决Spring MVC中响应乱码问题

    这篇文章主要介绍了如何解决Spring MVC中响应乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • springmvc分层领域模型概念详解

    springmvc分层领域模型概念详解

    本文核心为分层领域模型(VO , PO , BO, DAO ,POJO等)概念的个人理解,结合springmvc浅谈分层领域模型的相关知识,感兴趣的朋友跟随小编一起看看吧
    2021-08-08
  • SpringBoot实现RabbitMQ监听消息的四种方式

    SpringBoot实现RabbitMQ监听消息的四种方式

    本文主要介绍了SpringBoot实现RabbitMQ监听消息的四种方式,包括@RabbitListener,MessageListener接口,MessageListenerAdapter适配器,@RabbitHandler这几种,感兴趣的可以了解一下
    2024-05-05
  • 解决引用slf4j中Logger.info只打印出文字没有数据的问题

    解决引用slf4j中Logger.info只打印出文字没有数据的问题

    这篇文章主要介绍了解决引用slf4j中Logger.info只打印出文字没有数据的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • java web监听器统计在线用户及人数

    java web监听器统计在线用户及人数

    本文主要介绍了java web监听器统计在线用户及人数的方法解析。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-04-04
  • Java LocalTime的常用时间操作总结

    Java LocalTime的常用时间操作总结

    日常开发中, 我们会经常遇到时间的运算, 操作, 格式化等, 这篇文章主要为大家详细介绍了LocalTime的常用时间操作,感兴趣的小伙伴可以了解一下
    2023-11-11
  • 如何查看Linux上正在运行的所有Java程序列表

    如何查看Linux上正在运行的所有Java程序列表

    在linux操作时,经常要查看运行的项目的进程和端口,下面这篇文章主要给大家介绍了关于如何查看Linux上正在运行的所有Java程序列表的相关资料,需要的朋友可以参考下
    2023-10-10
  • Spring组件初始化扩展点BeanPostProcessor的作用详解

    Spring组件初始化扩展点BeanPostProcessor的作用详解

    本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感兴趣的朋友一起看看吧
    2025-03-03
  • Log4j关闭Spring和Hibernate日志打印方式

    Log4j关闭Spring和Hibernate日志打印方式

    这篇文章主要介绍了Log4j关闭Spring和Hibernate日志打印方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • java设计模式--桥接模式详解

    java设计模式--桥接模式详解

    这篇文章主要为大家详细介绍了java设计模式之桥接模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能给你带来帮助
    2021-07-07

最新评论