`
lixinye0123
  • 浏览: 335862 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

I/O及网络--MD5加密及Java的实现方式

    博客分类:
  • Java
阅读更多
 

首先
   我看到很多贴子,上面描述MD5加密解密等话题,因此写此文章为了把MD5加密问题简单的说个透彻,并且给大家已经实践过的代码。

其次
   MD5 加密并不是把原文加密,这个大家得注意,既然没有把原文加密何来的解密呢?简直是个笑话。MD5的用途就是把一段原文数据通过一定的算法生成16字节的密 文,通过这个密文我们可以检查原文的数据是否被修改过。常用在网络中明文数据传输,防止传输过程中内容被恶意修改。典型的应用协议为 radius,radius协议中有16byte就是MD5所留的,把用户的密码加在报文尾部进行MD5,把结果存在网络中,所以明文部分看不到用户的密 码,当服务器收到此包,用同样的方法进行MD5,如果加密出来的16byte一样,说明是有效的未被恶意修改的网络包。

最后
附上实现的代码

  1.  
  2. import java.security.*;
  3.  
  4. public class MD5 {
  5.   /**
  6.    * MD5
  7.    *
  8.    * @author Dreamer
  9.    */
  10.   public MD5() {
  11.   }
  12.  
  13.   public static byte[] md5(byte[] in) {
  14.     MessageDigest md = null;
  15.     byte[] out = new byte[16];
  16.     try {
  17.       md = MessageDigest.getInstance("MD5");
  18.     }
  19.     catch (NoSuchAlgorithmException ex) {
  20.       System.out.println(ex.toString());
  21.     }
  22.     md.reset();
  23.     md.update(in);
  24.     out = md.digest();
  25.     return out;
  26.   }
  27.  
  28.   public static byte[] md5(byte[] in, int len) {
  29.     MessageDigest md = null;
  30.     byte[] out = new byte[16];
  31.     try {
  32.       md = MessageDigest.getInstance("MD5");
  33.     }
  34.     catch (NoSuchAlgorithmException ex) {
  35.       System.out.println(ex.toString());
  36.     }
  37.     md.reset();
  38.     md.update(in, 0, len);
  39.     out = md.digest();
  40.     return out;
  41.   }
  42.  
分享到:
评论

相关推荐

    MD5加密算法(Java语言描述)

    MD5加密算法(Java版) 可以运行 原理  对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位...

    mp3音乐信息解析+MD5信息加密

    在实际应用中,使用Python的`hashlib`库即可轻松实现MD5加密,例如计算文件的MD5值并将其与预期值进行比较。 结合这两个知识点,我们可以开发一个工具,读取MP3文件的元数据,并使用MD5对文件内容进行加密。这样的...

    java实现调用c动态库

    gcc -shared -o libmd5.so -I/usr/lib/jvm/java-8-openjdk-amd64/include -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux MD5Util.cpp -lssl -lcrypto ``` 5. **运行Java程序** 现在Java程序可以调用`MD5...

    计算机软件-编程源码-java加密解密工具包.zip

    6. **加密流处理**:在I/O操作中集成加密,允许数据在读写时即刻加密或解密,例如CipherInputStream和CipherOutputStream。 7. **混淆和打包**:为了增加代码的可读性和安全性,源码可能还包含了混淆器,将源码转换...

    基于 Java Swing + 人脸识别编写的学校考试系统源代码Java基础大作业

    几乎涵盖了 Java 基础面向对象,封装继承多态,I/O 流,多线程,网络,数据库的所有知识 项目用到的主要技术 利用阿里云的短信API服务提供登录注册时的短信发送 利用 Java Mail 实现发送邮件 用户密码采用 MD5 加盐...

    UnSigCom.rar_JAVA 通信_java 加密

    2. **加密技术**:在Java中,加密通常通过Java Cryptography Extension (JCE) 实现,它提供了一套完整的加密算法库,如AES(高级加密标准)、RSA(公钥加密算法)和MD5(消息摘要算法5)。描述中提到“通过一个加密...

    java实现网络文件传输

    总结来说,"java实现网络文件传输"项目涵盖了网络编程的基本原理和实际应用,通过学习和实践这个项目,开发者可以深入了解Java Socket通信,文件I/O,以及如何设计可靠的网络文件传输系统。同时,分析源码有助于提升...

    基于 Java Swing + 人脸识别 实现的学校考试系统

    java ## 项目用到的主要技术 ...2. 利用 Java Mail 实现发送邮件 3. 用户密码采用 MD5 加盐加密 4. 利用百度AI的人脸识别接口整合Java Swing 实现了人脸识别 5. 利用 Spire 类库实现...5. 利用I/O流爬取网络图片作为封面

    java完整性校验解决方案

    这里我们将深入探讨 Java 中实现数据完整性验证的方法,主要关注MD5(Message-Digest Algorithm 5)哈希算法的应用。 首先,我们要了解什么是数据完整性。数据完整性是指数据在创建、存储和传输过程中保持不变的...

    java实现文件传输(上传下载)

    在Java编程语言中,文件传输是一项基础且...不过,实际的生产环境中,还需要考虑安全性(如SSL/TLS加密)、性能优化(如使用NIO非阻塞I/O)以及错误恢复策略等更多高级特性。希望这个解析能帮助你理解和实现这个项目。

    java语言实现的局域网点对点文件传输

    为了提高传输速度,可以使用缓冲区(BufferedInputStream/BufferedOutputStream)减少磁盘和网络I/O的次数,或者使用NIO(New I/O)框架进行非阻塞I/O操作。 12. **文件分块传输**: 对于大文件,可以将其分割为...

    Java大作业基于 Java Swing + 人脸识别 编写的学校考试系统源码

    项目用到的主要技术 ... 利用 Java Mail 实现发送邮件 用户密码采用 MD5 加盐加密 利用百度AI的人脸识别接口整合Java Swing 实现了人脸识别 ... 利用原生 I/O 流配合网络已经正则表达式从必应官网网爬取每日一图作为封面

    Java加密解密工具集 JCT v1.0源码包.zip

    Java加密解密工具集JCT(Java Cryptography Toolkit)是一个专为Java开发者设计的库,用于处理各种加密和解密任务。这个v1.0源码包提供了丰富的功能,可以帮助开发人员在Java应用中实现安全的数据保护。在这个压缩包...

    基于JAVA实现文件传输

    本主题聚焦于“基于JAVA实现文件传输”,这是一个核心的计算机网络和Java编程技术结合的话题。文件传输是网络通信中的基本操作,通过Java我们可以构建高效、安全的文件传输系统。下面将详细探讨这一领域的关键知识点...

    java实现局域网传文件

    在Java实现局域网文件传输时,除了基本的Socket编程,还可以利用NIO(非阻塞I/O)或异步I/O提高效率。此外,为了提升用户体验,可以设计友好的用户界面,提供文件选择、进度显示等功能。最后,为了保证数据的完整性...

    java源码:加密库 BeeCrypt.zip

    - **加密流**:可以将加密操作透明地集成到I/O流中,便于在文件或网络传输中使用。 - **密码策略**:允许自定义密码复杂度规则,提高安全性。 在实际开发中,BeeCrypt库通过简单的API接口,使得开发者能够方便地...

    JAVA聊天室设计与实现

    1. **JAVA网络编程**:在设计聊天室时,我们使用了JAVA的Socket编程来实现客户端和服务器之间的通信。Socket允许两个网络应用程序通过TCP/IP协议交换数据,是实现聊天功能的基础。客户端通过创建Socket连接到服务器...

    基于JAVA的文件加密解密.pdf

    实现Java文件加密解密功能,需要对Java的安全机制有深入的理解,同时,也需要掌握加密算法的工作原理和编程实现方式。对程序员来说,这不仅能加深对Java平台安全特性的认识,也能提升解决实际安全问题的能力。在实际...

    java写的p2p软件

    8. **事件驱动编程**:使用如NIO(Non-blocking I/O)或Netty这样的库,可以实现高效的事件驱动模型,提升P2P软件的性能和可扩展性。 9. **并发控制**:在高并发场景下,需要适当的锁和同步机制来保证数据的一致性...

    qq项目-java

    Java的`java.io`包提供了文件读写功能,而`java.nio`包提供了非阻塞I/O,适用于文件分块传输。 - 断点续传:如果传输中断,客户端可以记录已接收的部分,下次继续从断点处开始传输。 6. **表情发送**: - 表情...

Global site tag (gtag.js) - Google Analytics