MD5加密算法

MD5加密算法及Java实现 MD5加密算法及Java实现 上个学期在学数据库的时候,大作业是用Java Web+MySQL实现一个简易的系统,其中老师就提到了MD5算法,用来将用户提交的密码进行加密后放在数据库中,以防被泄露。在网页上进行表单校验时,也是将数据库中用户的散列值与用户提交的密码进行映射后得到的散列值进行比对。java.security中提供了一个MessageDigest类,提供了很多此类密码散列函数,如MD5和SHA(安全散列算法 Secure Hash Algorithm)等,所以只需要调用即可,不用亲自实现。 这个 阅读详情
 

很多的网络相关的软件都需要用户名密码登录,在开发的时候像这些密码都是保存在SharedPreferences中,这些密码保存在/data/data/包名/shared_prefs下,保存在一个XML文件中,如下:

可以用FileBrower查看


开始说道正题,MD5加密算法虽然现在有些人已经将其解开了,但是它的加密机制依然很强大,我想绝大对数还是不会解开的。MD5加密算法是单向加密,只能用你的密码才能解开,要不就是会解密算法,否则想都别想解开。为了防止这种情况的发生。还可以对加密过的密码进行再次加密。

 

下面是个小例子:

main.xml

Java代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >   
  7.     <EditText   
  8.         android:id="@+id/username"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:layout_marginLeft="10dp"  
  12.         android:layout_marginTop="20dp"  
  13.         android:layout_marginRight="10dp"  
  14.         android:hint="帐号"  
  15.     />   
  16.     <EditText   
  17.         android:id="@+id/password"  
  18.         android:password="true"  
  19.         android:layout_width="fill_parent"  
  20.         android:layout_height="wrap_content"  
  21.         android:layout_marginLeft="10dp"  
  22.         android:layout_marginTop="10dp"  
  23.         android:layout_marginRight="10dp"  
  24.         android:hint="密码"  
  25.     />   
  26.     <Button   
  27.         android:id="@+id/save"  
  28.         android:text="保存"  
  29.         android:layout_width="fill_parent"  
  30.         android:layout_height="wrap_content"  
  31.         android:layout_marginLeft="10dp"  
  32.         android:layout_marginTop="10dp"  
  33.         android:layout_marginRight="10dp"  
  34.     />   
  35.     <Button   
  36.         android:id="@+id/login"  
  37.         android:layout_width="fill_parent"  
  38.         android:layout_height="wrap_content"  
  39.         android:layout_marginLeft="10dp"  
  40.         android:layout_marginTop="10dp"  
  41.         android:layout_marginRight="10dp"  
  42.         android:text="登录"  
  43.     />   
  44. </LinearLayout>  
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
	<EditText
		android:id="@+id/username"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:layout_marginLeft="10dp"
		android:layout_marginTop="20dp"
		android:layout_marginRight="10dp"
		android:hint="帐号"
	/>
	<EditText
		android:id="@+id/password"
		android:password="true"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:layout_marginLeft="10dp"
		android:layout_marginTop="10dp"
		android:layout_marginRight="10dp"
		android:hint="密码"
	/>
	<Button
		android:id="@+id/save"
		android:text="保存"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:layout_marginLeft="10dp"
		android:layout_marginTop="10dp"
		android:layout_marginRight="10dp"
	/>
	<Button
		android:id="@+id/login"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:layout_marginLeft="10dp"
		android:layout_marginTop="10dp"
		android:layout_marginRight="10dp"
		android:text="登录"
	/>
</LinearLayout>

 login.xml

Java代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <LinearLayout   
  3.   xmlns:android="http://schemas.android.com/apk/res/android"  
  4.   android:layout_width="match_parent"  
  5.   android:layout_height="match_parent"  
  6.   android:orientation="vertical">   
  7.   <TextView   
  8.     android:layout_width="fill_parent"  
  9.     android:layout_height="wrap_content"  
  10.     android:text="login successful!"  
  11.   />   
  12. </LinearLayout>  
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">
  <TextView
  	android:layout_width="fill_parent"
  	android:layout_height="wrap_content"
  	android:text="login successful!"
  />
</LinearLayout>

 login.java

Java代码 复制代码  收藏代码
  1. package com.loulijun.md5demo;   
  2.   
  3. import android.app.Activity;   
  4. import android.os.Bundle;   
  5.   
  6. public class Login extends Activity {   
  7.   
  8.     @Override  
  9.     protected void onCreate(Bundle savedInstanceState) {   
  10.         // TODO Auto-generated method stub   
  11.         super.onCreate(savedInstanceState);   
  12.         setContentView(R.layout.login);   
  13.     }   
  14.   
  15. }  
package com.loulijun.md5demo;

import android.app.Activity;
import android.os.Bundle;

public class Login extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.login);
	}

}

 MD5Demo.java

Java代码 复制代码  收藏代码
  1. package com.loulijun.md5demo;   
  2.   
  3. import java.security.MessageDigest;   
  4.   
  5. import android.app.Activity;   
  6. import android.content.Intent;   
  7. import android.content.SharedPreferences;   
  8. import android.os.Bundle;   
  9. import android.view.View;   
  10. import android.widget.Button;   
  11. import android.widget.EditText;   
  12. import android.widget.Toast;   
  13.   
  14. public class MD5Demo extends Activity {   
  15.     private EditText username,password;   
  16.     private Button savebtn,loginbtn;   
  17.     String user,pass;   
  18.     @Override  
  19.     public void onCreate(Bundle savedInstanceState) {   
  20.         super.onCreate(savedInstanceState);   
  21.         setContentView(R.layout.main);   
  22.         username = (EditText)findViewById(R.id.username);   
  23.         password = (EditText)findViewById(R.id.password);   
  24.         savebtn = (Button)findViewById(R.id.save);   
  25.         loginbtn = (Button)findViewById(R.id.login);   
  26.   
  27.         savebtn.setOnClickListener(new Button.OnClickListener()   
  28.         {   
  29.   
  30.             @Override  
  31.             public void onClick(View v) {   
  32.                 SharedPreferences pre = getSharedPreferences("loginvalue",MODE_WORLD_WRITEABLE);   
  33.                 pass = MD5(password.getText().toString());   
  34.                 user = username.getText().toString();   
  35.                 if(!pass.equals("")&&!user.equals(""))   
  36.                 {   
  37.                       pre.edit().putString("username", username.getText().toString()).   
  38.                       putString("password",encryptmd5(pass)).commit();   
  39.                       Toast.makeText(getApplicationContext(), "保存成功!", Toast.LENGTH_SHORT).show();   
  40.                 }else  
  41.                 {   
  42.                     Toast.makeText(getApplicationContext(), "密码不能为空!", Toast.LENGTH_LONG).show();   
  43.                 }   
  44.                  
  45.                    
  46.             }   
  47.                
  48.         });   
  49.         loginbtn.setOnClickListener(new Button.OnClickListener()   
  50.         {   
  51.                
  52.                
  53.             @Override  
  54.             public void onClick(View v) {   
  55.                 SharedPreferences sp = getSharedPreferences("loginvalue", MODE_WORLD_READABLE);   
  56.                 String loginuser = sp.getString("username", null);   
  57.                 String loginpass = sp.getString("password", null);   
  58.                    
  59.                 user = username.getText().toString();   
  60.                 pass = password.getText().toString();   
  61.                    
  62.                 String passmd5 = MD5(pass);   
  63.                 String encryptmd5 = encryptmd5(passmd5);   
  64.                    
  65.                 System.out.println("username="+loginuser+"-------------password="+loginpass);   
  66.                   System.out.println("user=="+user+"-------------encryptmd5=="+encryptmd5);   
  67.                   if(!user.equals("")&&!pass.equals(""))   
  68.                   {   
  69.                       if( user.equals(loginuser)&& encryptmd5.equals(loginpass))   
  70.                       {   
  71.                           Intent intent = new Intent();   
  72.                           intent.setClass(MD5Demo.this, Login.class);   
  73.                           MD5Demo.this.startActivity(intent);     
  74.                           finish();   
  75.                       }else  
  76.                       {                  
  77.                           Toast.makeText(getApplicationContext(), "密码是错误的!", Toast.LENGTH_LONG).show();   
  78.                       }   
  79.                   }else  
  80.                   {   
  81.                       Toast.makeText(getApplicationContext(), "密码不能为空!", Toast.LENGTH_LONG).show();   
  82.                   }   
  83.                    
  84.             }   
  85.                
  86.         });   
  87.     }   
  88.        
  89.   //MD5加密,32位   
  90.     public static String MD5(String str)   
  91.     {   
  92.         MessageDigest md5 = null;   
  93.         try  
  94.         {   
  95.             md5 = MessageDigest.getInstance("MD5");   
  96.         }catch(Exception e)   
  97.         {   
  98.             e.printStackTrace();   
  99.             return "";   
  100.         }   
  101.            
  102.         char[] charArray = str.toCharArray();   
  103.         byte[] byteArray = new byte[charArray.length];   
  104.            
  105.         for(int i = 0; i < charArray.length; i++)   
  106.         {   
  107.             byteArray[i] = (byte)charArray[i];   
  108.         }   
  109.         byte[] md5Bytes = md5.digest(byteArray);   
  110.            
  111.         StringBuffer hexValue = new StringBuffer();   
  112.         for( int i = 0; i < md5Bytes.length; i++)   
  113.         {   
  114.             int val = ((int)md5Bytes[i])&0xff;   
  115.             if(val < 16)   
  116.             {   
  117.                 hexValue.append("0");   
  118.             }   
  119.             hexValue.append(Integer.toHexString(val));   
  120.         }   
  121.         return hexValue.toString();   
  122.     }   
  123.        
  124.     // 可逆的加密算法   
  125.     public static String encryptmd5(String str) {   
  126.         char[] a = str.toCharArray();   
  127.         for (int i = 0; i < a.length; i++)    
  128.         {   
  129.                 a[i] = (char) (a[i] ^ 'l');   
  130.         }   
  131.         String s = new String(a);   
  132.         return s;   
  133.     }   
  134.   
  135. }  
package com.loulijun.md5demo;

import java.security.MessageDigest;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MD5Demo extends Activity {
    private EditText username,password;
    private Button savebtn,loginbtn;
    String user,pass;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        username = (EditText)findViewById(R.id.username);
        password = (EditText)findViewById(R.id.password);
        savebtn = (Button)findViewById(R.id.save);
        loginbtn = (Button)findViewById(R.id.login);

        savebtn.setOnClickListener(new Button.OnClickListener()
        {

			@Override
			public void onClick(View v) {
				SharedPreferences pre = getSharedPreferences("loginvalue",MODE_WORLD_WRITEABLE);
				pass = MD5(password.getText().toString());
				user = username.getText().toString();
				if(!pass.equals("")&&!user.equals(""))
				{
					  pre.edit().putString("username", username.getText().toString()).
				      putString("password",encryptmd5(pass)).commit();
				      Toast.makeText(getApplicationContext(), "保存成功!", Toast.LENGTH_SHORT).show();
				}else
				{
					Toast.makeText(getApplicationContext(), "密码不能为空!", Toast.LENGTH_LONG).show();
				}
		      
				
			}
        	
        });
        loginbtn.setOnClickListener(new Button.OnClickListener()
        {
        	
        	
			@Override
			public void onClick(View v) {
				SharedPreferences sp = getSharedPreferences("loginvalue", MODE_WORLD_READABLE);
				String loginuser = sp.getString("username", null);
				String loginpass = sp.getString("password", null);
				
				user = username.getText().toString();
		    	pass = password.getText().toString();
		    	
		    	String passmd5 = MD5(pass);
		    	String encryptmd5 = encryptmd5(passmd5);
				
		    	System.out.println("username="+loginuser+"-------------password="+loginpass);
				  System.out.println("user=="+user+"-------------encryptmd5=="+encryptmd5);
				  if(!user.equals("")&&!pass.equals(""))
				  {
					  if( user.equals(loginuser)&& encryptmd5.equals(loginpass))
					  {
						  Intent intent = new Intent();
						  intent.setClass(MD5Demo.this, Login.class);
						  MD5Demo.this.startActivity(intent);  
						  finish();
					  }else
					  {				  
						  Toast.makeText(getApplicationContext(), "密码是错误的!", Toast.LENGTH_LONG).show();
					  }
				  }else
				  {
					  Toast.makeText(getApplicationContext(), "密码不能为空!", Toast.LENGTH_LONG).show();
				  }
				
			}
        	
        });
    }
    
  //MD5加密,32位
    public static String MD5(String str)
    {
    	MessageDigest md5 = null;
    	try
    	{
    		md5 = MessageDigest.getInstance("MD5");
    	}catch(Exception e)
    	{
    		e.printStackTrace();
    		return "";
    	}
    	
    	char[] charArray = str.toCharArray();
    	byte[] byteArray = new byte[charArray.length];
    	
    	for(int i = 0; i < charArray.length; i++)
    	{
    		byteArray[i] = (byte)charArray[i];
    	}
    	byte[] md5Bytes = md5.digest(byteArray);
		
		StringBuffer hexValue = new StringBuffer();
		for( int i = 0; i < md5Bytes.length; i++)
		{
			int val = ((int)md5Bytes[i])&0xff;
			if(val < 16)
			{
				hexValue.append("0");
			}
			hexValue.append(Integer.toHexString(val));
		}
		return hexValue.toString();
    }
    
    // 可逆的加密算法
    public static String encryptmd5(String str) {
    	char[] a = str.toCharArray();
    	for (int i = 0; i < a.length; i++) 
    	{
    			a[i] = (char) (a[i] ^ 'l');
    	}
    	String s = new String(a);
    	return s;
    }

}

 程序很简单,下面是运行的效果:




 

iOS 加密算法之MD5加密使用 软件开发过程中,对数据进行加密是保证数据安全的重要手段,常见的加密有Base64加密和MD5加密。Base64加密是可逆的,MD5加密目前来说一般是不可逆的。我们在开发一款iOS App过程中,对于发送的请求,其中有个“sign”的字段,这个key对应的value是MD5加密的字段。 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。 阅读详情

相关推荐

[C++] MD5加密算法原理及实现

参考文献: 1. RFC1321 - R. Rivest 2. 中山大学 蔡国扬 老师的 Web安全课件 算法概述 MD5 使用 little-endian,输入任意不定长度信息,以 512 位长进行分组,生成四个32位数据,最后联合起来输出固定 128 位长的信息摘要。 MD5 算法的基本过程为:求余、取余、调整长度、与链接变量进行循环运算、得出结果。 在 RFC1321 中,算法共分

从入门到扑街 3546

MD5明文密码加密

MD5 一、加密缘由 首先看一下未使用MD5加密的数据库 这样的话如果黑客攻击数据库的时候得到数据库的资料(主要密码)就会导致用户的财产等受到危害,所以需要对密码进行加密操作 二、加密的算法MD5 2.1、运用了单向加密算法(下面举个例子) 明文:zqs12345 密文: 02F5D4E65503F85D7E94AA8ADD5BE907(32位) 2.2、MD5加密的特点 (不可逆),意思是当MD5对密码加密后是不能逆向解码的,保证了数据的安全 (适用广泛),意思是所有的字符串都能加密成上图的32位的

weixin_49161209的博客 4298

WKWebView 白屏问题,WKWebView request body丢失问题

1,WKWebView 白屏问题 WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebView 是一个多进程组件,Network Loading 以及 UI Rendering 在其它进程中执行。初次适配 WKWebView 的时候,我们也惊讶于打开 WKWebView 后,App 进程内存消耗反而大幅下降,但是仔细观察会发现,Other Process 的内存占用会...

weixin_37543822的博客 734

Android杂谈---用MD5处理明文密码

很多的网络相关的软件都需要用户名密码登录,在开发的时候像这些密码都是保存在SharedPreferences中,这些密码保存在/data/data/包名/shared_prefs下,保存在一个XML文件中,如下: 可以用FileBrower查看 开始说道正题,MD5加密算法虽然现在有些人已经将其解开了,但是它的加密机制依然很强大,我想绝大对数还是不会解开的。MD5加密算法是单向加密,只能用...

LoveZhangjia521的专栏 333

保姆级教程:用rosbag录制和回放你的第一个ROS机器人数据(附C++/Python代码)

本文提供了一份详细的ROS机器人数据录制与回放教程,涵盖从命令行操作到C++/Python编程实现的全流程。通过rosbag工具,开发者可以高效记录和回放机器人运行时的传感器数据和控制指令,适用于故障复现、算法调试等多种场景。教程还包含高级技巧如时间同步和大文件处理,帮助用户快速掌握ROS数据管理核心技能。

weixin_29313239的博客 283

Ubuntu登录界面黑屏?手把手教你排查和修复LightDM启动失败(附debug命令详解)

本文详细介绍了Ubuntu系统中LightDM(Light Display Manager)启动失败导致登录界面黑屏的排查与修复方法。通过系统状态检查、调试模式分析、常见故障解决方案及高级调试技巧,帮助用户快速定位并解决LightDM相关问题,恢复正常的图形登录环境。

weixin_34005090的博客 314

MD5明文密码加密类

Hutool工具:Hutool是一个Java工具包,可以帮我们简化代码,减少方法。在引入加密类之前,先引入一个工具。

z972065491的博客 543

uniapp原生安卓插件开发之路

声明: 我的功能需求:全局悬浮框,也就是在其他应用上依旧能悬浮。查遍uni文档,无法实现,甚至native.js也无法实现,无奈只能走上原生插件开发这条不归路了。(吐槽:天天写前端js,突然写了下android简直要炸,public static String啥的,var不香嘛,不过别人严谨肯定还是有别人道理的,加油吧,争取能入个门!) 本人不懂安卓开发,完全安卓小白,所以安卓方面可能表达的不是很好,安卓代码可能写的不优美,但我功能最终还是实现了。但是为了需求,能力总能被“逼”出来。有描述错误的还望指正

Jone's Area 1万+

MD5加密后==’0’ 总结

MD5加密后==’0’ 总结 s878926199a 0e545993274517709034328855841020 s155964671a 0e342768416822451524974117254469 s214587387a 0e848240448830537924465865611904 s214587387a 0e8482404488305379...

qq_41281571的博客 4742

Windows报错“The system cannot find the file specified“的PATH环境变量解决方案

摘要: Windows系统中出现"The system cannot find the file specified"错误通常因PATH环境变量配置问题导致。本文提供解决方案:1)检查并修正PATH变量(通过命令行或图形界面添加缺失路径);2)确认程序安装路径及拼写无误;3)恢复误改的系统变量。示例演示了Python路径配置及无效路径清理方法,建议谨慎修改变量、使用绝对路径并定期检查。附参考表格详述操作步骤,帮助用户高效解决问题并优化系统环境。

shejizuopin的博客 3513

SI案例分享--考虑ESD保护二极管的差分线阻抗仿真

PCB设计中的cut out参考面早已是SI评估中常用的阻抗优化方式,通过合理的仿真建模,可以提供合适的设计参考,并保持与测试结果的高度一致性。

一只豌豆象的博客 1436

MD5数据加密方法

什么场景需要使用数据加密呢?比如秘密数据传输、用户密码加密存储等等数据传输可使用密钥对的方式进行加密解密,使用签名方式验证数据是否可靠,而密码加密存储可使用MD5等一些算法对数据进行单向加密。

weixin_52115456的博客 2万+

基于JeecgBoot 3.9.0 开源项目的企业管理平台

基于JeecgBoot 3.9.0 开源项目的企业管理平台

宁波阿成的博客 371

常见的加密算法原理与实现:MD5加密

系列三:MD5加密一、基本介绍二、加密原理2.1、处理原文2.2、设置初始值2.3、循环加工2.4、拼接结果 一、基本介绍 MD5加密算法,其全称是Message-Digest Algorithm 5,通常被称为信息摘要算法,所谓的信息摘要就是把明文内容按一定规则生成一段哈希(hash)值,即得到这段明文内容的信息摘要。利用MD5可以基于任意长度的明文字符串生成128位的哈希值,结果唯一且不可逆,因此MD5经常被用于防止信息被篡改、数字签名、以及对明文进行加密等场景。 二、加密原理 MD5算法加密的过程分为

仙路尽头谁为峰 1万+

无线通信基础:调制与解调技术_(42).7.3.2多进制频移键控解调(MFSK解调)

MFSK解调是一种通过频谱分析和频率检测来恢复数字信号的技术。本文介绍了MFSK解调的基本原理,包括信号接收、频谱分析、频率检测和符号判决。在实际应用中,噪声会对解调性能产生影响,因此引入了信噪比优化和多步判决方法来提高解调的准确性。通过性能评估,可以更好地理解MFSK解调在不同噪声环境下的表现。这些方法和技术为MFSK在实际通信系统中的应用提供了理论和实践基础。

2401_87715305的博客 1313

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java 实现 MD5 加密算法

MD5 消息摘要算法,英文:MD5 Message-Digest Algorithm ,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5 是单向加密不可逆的,也就是常说的非对称加密,常用于用户密码的加密,这样即使密码泄露也不知道对应的明文信息,有效的保护系统和用户的隐私信息。MD5 算法产生的是一个 128 位的散列值,128 位是指的二进制中的 128 位,具体占 16 字节(每个字节可以表示为 8 位二进制数)。

grammer_du的博客 8079

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

MD5加密算法与实现

MD5加密算法与实现 文章目录MD5加密算法与实现MD5算法简介MD5算法的优势MD5算法流程代码实现 MD5算法简介 MD5的全称是Message-Digest Algorithm,是Hash算法中的一种重要算法,具有单项加密、加密结果唯一、安全性能好等特点。MD5以512位分组来处理输入的信息,且每一分组又被划分为16个 32位子分组,经过了一系列的处理后 ,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。 MD5算法的优势 (1)容易计算及不可逆性: 现在主流的

qq_52199692的博客 2179

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C#常用的加密算法之一 MD5

C#常用的加密算法之一 MD5 参考文章 MD5加密概述,原理及实现 C#常用的加密算法:MD5、Base64、SHA1、SHA256、HmacSHA256、DES、AES、RSA MD5概述 MD5消息摘要算法,属Hash算法一类。MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要(32位的数字字母混合码)。 MD5特点 不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样 一个MD5理论上的确是可能对应无数多个原文的,因为MD5是有限多个的而原文可以是无数多个。比如主流使用

XHeineken的博客 7405

MD5加密算法原理

MD5加密算法原理2006年10月10日 星期二 15:33   MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security I

小剑 专栏 1101

MD5加密算法简单示例

MD5加密算法简单示例         现在网络上一般的网站,只要功能稍微完善一点的,都需要用户进行注册,提供诸如用户名、用户密码、电子邮件、甚至是电话号码、详细住址等个人隐私信息,然后才可以 享受网站提供的一些特殊的信息或者服务。为了增加安全性,有必要对数据库中的隐私数据进行加密。         MD5算法,即“Message-Digest Algorithm 5(信息-摘要算法)”

NetSuite 张老师 4154

MD5加密算法(python)

MD5加密算法属于单向加密算法。 单向加密算法是中在加密过程中不适应秘钥,将数据加密处理成加密数据,加密数据无法被解密。因为无法通过加密数据反向得到原来的内容,单向加密算法又被称为不可逆加密算法。单向加密算法一般使用哈希算法来生成密文,又称为哈希加密算法。 由于MD5具有不可逆解密的特性,它被广泛应用于密码验证和数据完整性的验证。在使用时,一般将新注册用户的密码通过MD5加密后存储到数据库中,当用户登录时,通过验证MD5来检查用户输入密码的正确性。 #!/usr/bin/python import

乐以风的博客 4262

Android MD5加密算法

比较简单,直接贴代码 import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5 { public static String getMD5(String content) { try { MessageDigest digest =

幻想的旋律 2240

讲道理,MD5 到底是不是加密算法?

点击上方蓝字设为星标下面开始今天的学习~在回答这个问题之前,我们先分别来了解一下两个知识点:什么是 MD5 算法?什么是加密算法?一、MD5算法MD5 ...

程序员吴师兄的博客 9068

md5加密算法c语言版

md5加密算法c语言版 from:http://blog.sina.com.cn/s/blog_693de6100101kcu6.html 注:以下是md5加密算法c语言版(16/32位) --------------------------------------------------- 网上找到的md5函数的实现,包括三个文件,依次如下: 头文件 TL_MD5.h 1 [cpp] 2 #ifndef MD5_H 3 #define MD5_H 4 5 typ.

xuerongdeng的专栏 4335

MD5加密算法简介

MD5加密算法简介一、算法实现(转载自绿色兵团) 1、MD5算法是对输入的数据进行补位,使得如果数据位长度LEN对512求余的结果 是448。    即数据扩展至K*512+448位。即K*64+56个字节,K为整数。    具体补位操作:补一个1,然后补0至满足上述要求   2、补数据长度:    用一个64位的数字表示数据的原始长度B,把B用两个32位数表示。这时,数据 就被填    补成

shawls的专栏 1665

MD5 加密算法详解

MD5 加密算法详解一、概念二、算法原理2.1、MD5(32)、MD5(16)2.2、MD5算法 4步流程三、 其他3.1、MD5的作用3.2、MD5可以作为数据库主键,唯一吗? 一、概念 MD5算法是单向散列算法的一种。单向散列算法也称为HASH算法,是一种将任意长度的信息压缩至某一固定长度(称之为消息摘要)的函数(该压缩过程不可逆)。在MD5算法中,这个摘要是指将任意数据映射成一个128位长...

暴暴风的博客 1万+
上一篇: Android读取XML资源
下一篇: VC中Error spawning cl.exe错误的解决方法.
21freestyle
博客等级 码龄15年 14粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值