java加密枝术深入理解
2023-06-13 09:14:41 时间
★编程思路:
java.security包中的MessageDigest类提供了计算消息摘要的方法,首先生成对象,执行其update()方法可以将原始数据传递给该对象,然后执行其digest()方法即可得到消息摘要。具体步骤如下:
(1)生成MessageDigest对象
MessageDigestm=MessageDigest.getInstance("MD5");
分析:和2.2.1小节的KeyGenerator类一样。MessageDigest类也是一个工厂类,其构造器是受保护的,不允许
直接使用newMessageDigist()来创建对象,而必须通过其静态方法getInstance()生成MessageDigest对象。
其中传入的参数指定计算消息摘要所使用的算法,常用的有"MD5","SHA"等。若对MD5算法的细节感兴趣可参考
http://www.gztarena.com/rfc1321.txt。
(2)传入需要计算的字符串
m.update(x.getBytes("UTF8"));
分析:x为需要计算的字符串,update传入的参数是字节类型或字节类型数组,对于字符串,需要先使用
getBytes()方法生成字符串数组。
(3)计算消息摘要
bytes[]=m.digest();
分析:执行MessageDigest对象的digest(广州达内java)方法完成计算,计算的结果通过字节类型的数组返回。
(4)处理计算结果
必要的话可以使用如下代码将计算结果s转换为字符串。
复制代码代码如下:
java.security包中的MessageDigest类提供了计算消息摘要的方法,首先生成对象,执行其update()方法可以将原始数据传递给该对象,然后执行其digest()方法即可得到消息摘要。具体步骤如下:
(1)生成MessageDigest对象
MessageDigestm=MessageDigest.getInstance("MD5");
分析:和2.2.1小节的KeyGenerator类一样。MessageDigest类也是一个工厂类,其构造器是受保护的,不允许
直接使用newMessageDigist()来创建对象,而必须通过其静态方法getInstance()生成MessageDigest对象。
其中传入的参数指定计算消息摘要所使用的算法,常用的有"MD5","SHA"等。若对MD5算法的细节感兴趣可参考
http://www.gztarena.com/rfc1321.txt。
(2)传入需要计算的字符串
m.update(x.getBytes("UTF8"));
分析:x为需要计算的字符串,update传入的参数是字节类型或字节类型数组,对于字符串,需要先使用
getBytes()方法生成字符串数组。
(3)计算消息摘要
bytes[]=m.digest();
分析:执行MessageDigest对象的digest(广州达内java)方法完成计算,计算的结果通过字节类型的数组返回。
(4)处理计算结果
必要的话可以使用如下代码将计算结果s转换为字符串。
Stringresult="";
for(inti=0;i
result+=Integer.toHexString((0x000000ff&s)|0xffffff00)。substring(6);
}
★代码与分析:
完整程序如下:
importjava.security.*;
publicclassDigestPass{
publicstaticvoidmain(Stringargs[])throwsException{
Stringx=args[0];
MessageDigestm=MessageDigest.getInstance("MD5");
m.update(x.getBytes("UTF8"));
bytes[]=m.digest();
Stringresult="";
for(inti=0;i
result+=Integer.toHexString((0x000000ff&s)|0xffffff00)。substring(6);
}
System.out.println(result);
}
}
★运行程序
输入javaDigestCalcabc来运行程序,其中命令行参数abc是原始数据,屏幕输出计算后的消息摘要:
900150983cd24fb0d6963f7d28e17f72。
相关文章
- java中数组转列表_Java数组转list
- java分布式事务框架_Java分布式事务,及解决方案
- java分层打印二叉树_基于Java的二叉树层序遍历打印实现
- java calendar获取年_Java Calendar获取年、月、日、时间,设置年、月、日
- java运算中的取余
- java calendar计算时间差_Java Calendar 计算时间差
- 005 Java面向对象知识点 抽象 封装 继承 多态 命名方式 JavaDoc文档 方法的调用 包的作用「建议收藏」
- java applet介绍,Java Applet教程介绍[通俗易懂]
- C++和java的区别和联系「建议收藏」
- java messagedigest_Java 自带的加密类MessageDigest类(加密MD5和SHA)[通俗易懂]
- Java后台接收参数出现java.lang.Integer cannot be cast to java.lang.Double错误(已解决)[通俗易懂]
- Java对象
- java url加密_Java实现url加密处理的方法示例
- 【原创】Java语言中的基本数据类型
- java解释器虚拟机-【Java解释器和编译器】解释器和编译器的深入理解
- 【Android 安全】DEX 加密 ( Java 工具开发 | 生成 dex 文件 | Java 命令行执行 )
- Java连接MongoDB代码示例详解编程语言
- java面向对象(3)详解编程语言
- java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener问题解决详解编程语言
- Linux下Java开发入门指南(linux下java开发)
- java导出csv格式文件详解编程语言
- Java Connection.close()方法:关闭Connection对象
- 深入Linux环境下Java应用调试实践(linux调试java)
- Java监控MySQL性能:实现数据库运行优化(java监控mysql)
- 使用Java连接SQL Server数据库,轻松实现数据交互(java连sqlserver)
- Java实现与Oracle数据库的无缝整合(java整合oracle)