信息加密之信息摘要加密MD2、MD4、MD5

   对于用户数据的保密一直是各个互联网企业头疼的事,那如何防止用户的个人信息泄露呢?今天为大家介绍一种最简单的加密方式--信息摘要算法MD。它如何来保护用户的个人信息呢?其实很简单,当获得到用户的信息后,先对其进行加密,然后将加密的结果保存到数据库,这样即使被盗,用户的数据也不会丢失。下面上代码:

  JAVA的jdk提供了MD2和MD5的加密方式, JAVA不支持MD4的jdk加密方式,jdk的实现如下:

private static void MD2_jdk(){try {MessageDigest digest = MessageDigest.getInstance("MD2");//获得消息摘要MD2对象byte[] md2Byte = digest.digest(src.getBytes());System.out.println("md2Byte :"+md2Byte.toString());System.out.println("md2Byte :"+Hex.encodeHexString(md2Byte));} catch (NoSuchAlgorithmException e) {e.printStackTrace();}    }private static void MD5_jdk(){try {MessageDigest digest = MessageDigest.getInstance("MD5");//获得消息摘要MD5对象byte[] md5Byte = digest.digest(src.getBytes());System.out.println("md5Byte :"+md5Byte.toString());System.out.println("md5Byte :"+Hex.encodeHexString(md5Byte));} catch (NoSuchAlgorithmException e) {e.printStackTrace();}}

  bc提供了MD2\4\5的加密实现(bc使用需要添加bc的jar包):

private static void MD2_bc(){Digest digest = new MD2Digest();//通过BC获得消息摘要MD2对象digest.update(src.getBytes(), 0, src.getBytes().length);byte[] md2Byte = new byte[digest.getDigestSize()];digest.doFinal(md2Byte, 0);System.out.println("md2Byte :"+md2Byte.toString());System.out.println("md2Byte : "+org.bouncycastle.util.encoders.Hex.toHexString(md2Byte));}private static void MD4_bc(){Digest digest = new MD4Digest();//通过BC获得消息摘要MD4对象digest.update(src.getBytes(), 0, src.getBytes().length);byte[] md4Byte = new byte[digest.getDigestSize()];digest.doFinal(md4Byte, 0);System.out.println("md4Byte :"+md4Byte.toString());System.out.println("md4Byte : "+org.bouncycastle.util.encoders.Hex.toHexString(md4Byte));}private static void MD5_bc(){Digest digest = new MD5Digest();//通过BC获得消息摘要MD5对象digest.update(src.getBytes(), 0, src.getBytes().length);byte[] md5Byte = new byte[digest.getDigestSize()];digest.doFinal(md5Byte, 0);System.out.println("md5Byte :"+md5Byte.toString());System.out.println("md5Byte : "+org.bouncycastle.util.encoders.Hex.toHexString(md5Byte));}

  通过bc为jdk添加一个动态的MD4方法:

private static void MD4_bc_jdk(){try {Security.addProvider(new BouncyCastleProvider());MessageDigest md = MessageDigest.getInstance("MD4");byte[] md4Byte = md.digest(src.getBytes());System.out.println("md4Byte :"+md4Byte.toString());System.out.println("md4Byte :"+Hex.encodeHexString(md4Byte));} catch (NoSuchAlgorithmException e) {e.printStackTrace();}}

  最后为大家介绍一下CC的MD2\5的实现:

DigestUtils.md2Hex(src.getBytes());
DigestUtils.md5Hex(src.getBytes());

注:src为设置的一个字符串。

  到这里消息摘要加密算法的MD2\4\5的实现到此讲解完毕,对Base64和对称加密算法有兴趣的朋友可以看一下我之前分享的博客。小生很喜欢信息安全,那位有兴趣,欢迎交流。(1453296946@qq.com)

转载于:https://www.cnblogs.com/AndroidJotting/p/4284337.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 从网络上下载文件

/*** 下载文件到本地 */public static void downloadPicture(String imageUrl, String filename){ URL url;try {url new URL(imageUrl);//打开网络输入流DataInputStream dis new DataInputStream(url.openStream());//建立一个新的文件FileOutputStream fos new FileOutp…

An error was encountered while running(Domain=LaunchSerivcesError, Code=0)

今天突然遇到这样一个错误,编译可以通过,但是运行就会弹出这个错误提示: An error was encountered while running(DomainLaunchSerivcesError, Code0) 解决办法就是重置模拟器。 点击模拟器菜单中的Reset Contents and Settings,…

hdu 4091 线性规划

分析转自:http://blog.csdn.net/dongdongzhang_/article/details/7955136 题意 : 背包能装体积为N, 有两种宝石, 数量无限, 不能切割。 分别为 size1 value 1 size2 value2 问背包能装最大的价值? 思路 &#xff…

linux fmt命令

简单的格式化文本 fmt [option] [file-list] fmt通过将所有非空白行的长度设置为几乎相同,来进行简单的文本格式化 参数 fmt从file-list中读取文件,并将其内容的格式化版本发送到标准输出。如果不制定文件名或者用连字符(-)来替代…

基于 jQuery支持移动触摸设备的Lightbox插件

Swipebox是一款支持桌面、移动触摸手机和平板电脑的jquery Lightbox插件。该lightbox插件支持手机的触摸手势,支持桌面电脑的键盘导航,并且支持视频的播放。 在线预览 源码下载 简要教程 Swipebox是一款支持桌面、移动触摸手机和平板电脑的jQuery Ligh…

简化工作——我的bat文件

重启adb(radb.bat): echo off call adb kill-server call adb start-server call adb remount push 一个apk(push.bat) echo off if "%1""launcher" ( call adb push 相关apk路径 system/app )else ( echo 请添加一个参数!当前有效…

js操作数据库

<script languagejavascript> function replace(v) { //容错问题&#xff0c;请读者自行进行判断。 //定义SQL语句 var sql select * from Dictionary where MainID v ; //新建数据库连接对象和数据集存取对象 var ConnDB new ActiveXObject(adodb.connection)…

Java中StringBuilder的清空方法比較

StringBuilder 没有提供clear或empty方法。清空有3种方法&#xff1a;1&#xff09;新生成一个&#xff0c;旧的由系统自己主动回收2&#xff09;使用delete3&#xff09;使用setLength 将三种方法循环1000万次&#xff0c;代码&#xff1a; 1.public class sbbm { 2. 3. st…

LinkCutTree 总结

最近学习了LinkCutTree&#xff0c;总结一下。 LinkCutTree是一种数据结构&#xff08;是Tree Decomposition中的一种&#xff09;&#xff0c;她维护的一般是无向图&#xff08;一个森林&#xff09;&#xff0c;支持连边、删边、链修改、链查询&#xff08;点属于特殊的链&am…

linux 数据转换

使用bc 可以进行不同进制之间的转换 digit100; printf "the number is : %d\n" $digit;binary$( echo "obase2;$digit" | bc );printf "result is : %s\n" $binary;digit1$( echo "obase10;ibase2;$binary" | bc );printf "bina…

PHP常用的正则表达式(有些需要调整)

平时做网站经常要用正则表达式&#xff0c;下面是一些讲解和例子&#xff0c;仅供大家参考和修改使用&#xff1a; "^\d$"  //非负整数&#xff08;正整数 0&#xff09; 顺平注: 验证输入id数值&#xff0c;不能为0 $reg1/^[1-9]\d*$/; "^[0-9]*[1-9][0-9]…

浮点数据的运算

使用bc设置scale可以进行相应的浮点运算#!/bin/bash# FileName TestBc.shdigit100;sqrt$(echo "scale3;sqrt($digit) " | bc);echo $sqrt;var$(echo "scale3;10/3" | bc);echo $var;var1$( echo "scale2;0.5*3" | bc);echo $var1;

IE(IE6/IE7/IE8)支持HTML5标签--20150216

让IE&#xff08;ie6/ie7/ie8&#xff09;支持HTML5元素&#xff0c;我们需要在HTML头部添加以下JavaScript&#xff0c;这是一个简单的document.createElement声明&#xff0c;利用条件注释针对IE来调用这个js文件。Opera&#xff0c;FireFox等其他非IE浏览器就会忽视这段代码…

linux shell 求绝对值

abs-1;printf "the number is : %d\n" $abs;printf "abs is : %d\n" $abs;if [ $abs -lt 0 ]; thenlet abs0-$abs;fiprintf "abs is : %d\n" $abs;

PyQt中从RAM新建QIcon对象 / Create a QIcon from binary data

一般&#xff0c;QIcon是通过png或ico等图标文件来初始化的&#xff0c;但是如果图标资源已经在内存里了&#xff0c;或者一个zip压缩文件内&#xff0c;可以通过QPixmap作为桥梁&#xff0c;转换为图标。 zf zipfile.ZipFile("library.zip") # 准备zip文件 pm …

Java中的代码块标记

taga: {for (int k 0; k < 5; k) {System.out.println("kkkkkk: " k);if (k > 3) {break taga;}tagb: for (int i 0; i < 10; i) {System.out.println("i: " i);if (i 2) {break tagb;}}}}

windows中安装zookeeper

Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目&#xff0c;它主要是用来解决分布式应用中经常遇到的一些数据管理问题&#xff0c;如&#xff1a;统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。本文将从使用者角度详细介绍 Zookeeper 的安装和配…

MySQL Event

一、前言自MySQL5.1.6起&#xff0c;增加了一个非常有特色的功能–事件调度器(Event Scheduler)&#xff0c;可以用做定时执行某些特定任务&#xff08;例如&#xff1a;删除记录、对数据进行汇总等等&#xff09;&#xff0c;来取代原先只能由操作系统的计划任务来执行的工作。…

Java中实现统计一个字符串在另一个字符串中出现的次数统计

public int getSubNum(String a,String b){int num0;String stra;int indexa.indexOf(b);while(index!-1){num;strstr.substring(indexb.length()-1);indexstr.indexOf(b);}return num;}

【编程练习】正整数分解为几个连续自然数之和

题目&#xff1a;输入一个正整数&#xff0c;若该数能用几个连续正整数之和表示&#xff0c;则输出所有可能的正整数序列。 一个正整数有可能可以被表示为n(n>2)个连续正整数之和&#xff0c;如&#xff1a; 1512345 15456 1578 有些数可以写成连续N&#xff08;>1&am…