`
songshu8312
  • 浏览: 18929 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

MD5 16位 加密字符串标准算法

阅读更多

首先先了解md5加密算法的原理,太高深太专业的说法,我不会,就算会说了也可能大家不明白

 

原理:将存储字符串的bit(1byte = 8bit)顺序打乱,然后重组,抽取32位byte,每2个再进行组合,形成16组byte[]数组,然后在依次转化为16进制。  这就是16位的MD5加密算法,具体算法如下:

 

public static String getMD5(byte[] source) {
  String s = null;
  char hexDigits[] = { // 用来将字节转换成 16 进制表示的字符
  '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',
    'e', 'f' };
  try {
   java.security.MessageDigest md = java.security.MessageDigest
     .getInstance("MD5");
   md.update(source);
   byte tmp[] = md.digest(); // MD5 的计算结果是一个 128 位的长整数,
   // 用字节表示就是 16 个字节
   char str[] = new char[16 * 2]; // 每个字节用 16 进制表示的话,使用两个字符,
   // 所以表示成 16 进制需要 32 个字符
   int k = 0; // 表示转换结果中对应的字符位置
   for (int i = 0; i < 16; i++) { // 从第一个字节开始,对 MD5 的每一个字节
    // 转换成 16 进制字符的转换
    byte byte0 = tmp[i]; // 取第 i 个字节
    str[k++] = hexDigits[byte0 >>> 4 & 0xf]; // 取字节中高 4 位的数字转换,
    // >>> 为逻辑右移,将符号位一起右移
    str[k++] = hexDigits[byte0 & 0xf]; // 取字节中低 4 位的数字转换
   }
   s = new String(str); // 换后的结果转换为字符串

  } catch (Exception e) {
   e.printStackTrace();
  }
  return s;
 }

 

 

有时候我们需要用到byte[16]....byte[0] = '0 x b[0]+b[1]'  --这不是代码是一个形象的比如

修改如下:

public static byte[] getMD5Byte(byte[] source) {
  byte[] b = new byte[16];
  char hexDigits[] = { 
  '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',
    'e', 'f' };
  
  try {
   java.security.MessageDigest md = java.security.MessageDigest
     .getInstance("MD5");
   md.update(source);
   byte tmp[] = md.digest(); 
   char str[] = new char[16 * 2]; 
   int k = 0; 
   for (int i = 0; i < 16; i++) {    

    byte byte0 = tmp[i];

    str[k++] = hexDigits[byte0 >>> 4 & 0xf]; 

    str[k++] = hexDigits[byte0 & 0xf]; 

    int a = Integer.parseInt((str[k-2]+""+str[k-1]).toString(),16);
    b[i] = (byte)a;
   }

  } catch (Exception e) {
   e.printStackTrace();
  }
  return b;
 }

分享到:
评论

相关推荐

    MD5加密字符串生成密码

    在密码学中,使用MD5加密字符串生成密码的原因在于MD5可以将任意长度的字符串转化为固定长度的哈希值,这使得每个输入都有一个唯一的输出,理论上不可能找到两个不同的输入产生相同的MD5值,这一特性被称为“碰撞...

    随机生成36位MD5加密字符

    这段代码首先获取了`MD5`算法的`MessageDigest`实例,然后对输入字符串进行哈希计算,得到16字节的哈希值。接着,通过循环将每个字节转换为两位的十六进制字符串,拼接成最终的32位MD5值。 如果要生成"36位MD5加密...

    利用MD5算法进行加密字符串

    通过上述分析可知,该程序通过MD5算法实现了字符串的加密及验证功能。这对于保护敏感信息(如密码)的安全性具有重要意义。同时,了解和掌握MD5加密的基本原理及其在Java中的实现方式对于开发者来说是非常有用的技能...

    使用MD5或者SHA算法对字符串加密

    通过以上分析,我们不仅了解了MD5与SHA算法的基本概念,还掌握了如何在Java中实现这两种算法来加密字符串的方法。这对于开发人员来说是非常实用的知识点,可以帮助他们在实际项目中更好地保护数据的安全性。

    MD5加密字符串(32位,16位大小写输出)

    在实际应用中,MD5加密字符串的生成通常涉及编程语言的库或工具。例如,在Python中,可以使用`hashlib`库的`md5()`函数来处理字符串: ```python import hashlib def md5_hash(string): hash_object = hashlib.md...

    delphi开发的md5字符串加密工具

    综上所述,"delphi开发的MD5字符串加密工具"是一个基于Delphi编程语言的小型应用程序,它实现了MD5哈希算法,提供了快速加密和方便的复制功能,适用于快速获取文本的MD5摘要,是个人或小团队在处理MD5加密需求时的一...

    C#实现MD5加密(16位和32位)算法

    c#语言实现的原始MD5加密算法,支持16位加密和32位加密.

    MD5加密文件和字符串

    6. **输出结果**:计算出的MD5摘要通常以32位的十六进制字符串形式展示,可以通过遍历16字节的摘要数组,并对每个字节进行两次转换(每次8位)得到对应的十六进制字符。 7. **安全性和碰撞**:虽然MD5曾被认为是...

    MD5加密32位小写

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的信息映射为一个固定长度的摘要值,通常是32位的十六进制字符串。MD5在信息安全领域扮演着重要的角色,常用于数据校验、密码存储等...

    经典的MD5字符串加密VC 6.0源码.rar

    在源码中,加密部分会计算输入字符串的MD5摘要,而解密部分则可能对比用户输入的MD5摘要与计算得到的是否一致。 5. **事件处理**:窗体中的按钮或其他控件会关联到事件处理器函数,这些函数会在用户交互时被调用,...

    VB.NET《MD5加密字符串(Excel加密字符串+字符串验证).zip

    MD5的16位加密通常指的是取MD5结果的前16个字节(8个十六进制字符),这对于某些场景可能已经足够,因为完全匹配MD5碰撞(两个不同的输入产生相同的MD5值)虽然理论上可能存在,但在实际应用中极其罕见。16位加密的...

    java字符串加密 - MD5

    总结来说,Java中的MD5加密主要通过`MessageDigest`类实现,用于将字符串转换为不可逆的32位哈希值,以达到数据验证的目的。尽管MD5在安全性上有所欠缺,但它仍然是许多历史遗留系统和理解哈希算法的基础。对于新的...

    C++ 计算字符串md5_16和md5_32

    描述中的“**使用C++实现字符串计算16位md5和32位的md5**”意味着我们需要用C++语言编写代码,处理输入的字符串,通过特定算法生成16位和32位的MD5摘要。在C++中,这通常涉及到对字符串进行二进制操作、使用位运算...

    c语言实现md5算法字符串加密(vc调试通过)

    C语言实现MD5算法对于理解其工作原理以及在实际项目中应用哈希加密非常有帮助。在VC环境下,你可以使用C语言编写代码并进行调试,以确保MD5函数的正确性。 MD5算法主要包括四个步骤:初始化、处理消息块、压缩和...

    MD5 Hash 字符串加密小工具

    这个"MD5 Hash 字符串加密小工具"是针对字符串进行MD5加密处理的一个便捷工具,主要应用于数据校验、密码存储等方面。 在IT行业中,MD5加密通常用于以下几个场景: 1. **数据完整性检查**:当下载文件后,可以通过...

    md5加密实现对字符串进行简单加密

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的输入数据转换为固定长度的输出,通常是32位的十六进制字符串。在IT行业中,MD5主要用于数据完整性校验和简单的密码加密。 MD5算法...

    字符串MD5加密

    2. **字符串到MD5**:对于字符串的MD5加密,首先需要将字符串转换成字节流,然后应用MD5算法。MD5算法对这些字节进行多次迭代计算,最后得到一个16字节的摘要,再以16进制形式展示,即32个字符的字符串。 3. **代码...

    VC6MFC md5计算 返回CString字符串

    CString 是 MFC 提供的一个字符串类,它提供了许多方便的字符串操作方法,比如在本例中,用于存储和返回MD5的16进制字符串。 接下来是一个简化的MD5计算cpp文件可能的实现: ```cpp #include #include // MD5...

    MD5字符串加密和DES加密

    MD5字符串加密是一种广泛使用的哈希函数,全称为Message-Digest Algorithm 5,它能够将任意长度的信息转化为固定长度的128位(16字节)摘要,通常以32位的十六进制字符串表示。MD5的主要特点是快速、简单且在理想...

    md5字符串加密 vba

    5. **整合输出**:最后,将16个16进制数字合并成一个32位的MD5哈希值字符串。 在"Book1.xls"这个文件中,很可能是包含了一个VBA项目,该项目可能有一个或多个模块,其中定义了上述步骤的函数和过程。你可以通过打开...

Global site tag (gtag.js) - Google Analytics