我们知道,编程中数据的传输,保存,为了考虑安全性的问题,需要将数据进行加密.我们拿数据库做例子.如果一个用户注册系统的数据库,没有对用户的信息进行保存,如,我去页面注册,输入"Vicky","123456".注册.web服务器未对数据进行加密而直接写入数据库,那么数据库中的用户信息,便是一个直接可用的数据!一旦服务器服务器被黑~那么用户的信息将毫无保留的展现在黑客面前...为了解决这个弊端,现在大多数都会将信息进行MD5加密.如"Vicky"与"123456"加密后,会生成16位或者32位字符串.而黑客即便获得这些数据也无法使用...
MD5是常用的加密方法,这里主要讲述JDK中的java.security.MessageDigest加密方式!
- @Test
- publicvoidtestMD(){
- try{
- Stringusername="Vicky";
- MessageDigestmessageDigest=MessageDigest.getInstance("MD5");
- messageDigest.update(username.getBytes());
- StringusernameMD5=messageDigest.digest().toString();
- System.out.println(usernameMD5);
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
打印的是:[B@107077e,这是因为输出的是byte[](messageDigest.digest()得到的是个二进制byte数组,有可能某些byte是不可打印的字符。)...我们可以使用Base64来处理byte[]
- @Test
- publicvoidtestMD(){
- try{
- Stringusername="Vicky";
- MessageDigestmessageDigest=MessageDigest.getInstance("MD5");
- messageDigest.update(username.getBytes());
- System.out.println(Base64.encode(messageDigest.digest()));
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
打印的是:AgwpBZPO+ErqxOosJp0ybQ==
当然我们可以编写函数,处理二进制转hex字符串.
如:
- privateStringtoHex(bytebuffer[]){
- StringBuffersb=newStringBuffer(buffer.length*2);
- for(inti=0;i<buffer.length;i++){
- sb.append(Character.forDigit((buffer[i]&240)>>4,16));
- sb.append(Character.forDigit(buffer[i]&15,16));
- }
- returnsb.toString();
- }
编写测试语句
- @Test
- publicvoidtestMD(){
- try{
- Stringusername="Vicky";
- MessageDigestmessageDigest=MessageDigest.getInstance("MD5");
- messageDigest.update(username.getBytes());
- System.out.println(toHex(messageDigest.digest()));
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
打印:020c290593cef84aeac4ea2c269d326d,返回的是32位的字符串!!!
这样我们便可以直接使用JDK为我们提供的加密类与函数了!
MessageDigest不仅仅只为我们提供了"MD5"加密,还提供了"SHA-1"
创建的方法只为: MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
MD5与SHA-1的区别为:MD5是16位,SHA是20位(这是两种报文摘要的算法)
难道MessageDigest 只能用作数据加密吗?如何使用MessageDigest生成安全令牌!!!
转:http://blog.csdn.net/eclipser1987/article/details/5158784
我们知道,编程中数据的传输,保存,为了考虑安全性的问题,需要将数据进行加密.我们拿数据库做例子.如果一个用户注册系统的数据库,没有对用户的信息进行保存,如,我去页面注册,输入"Vicky","123456".注册.web服务器未对数据进行加密而直接写入数据库,那么数据库中的用户信息,便是一个直接可用的数据!一旦服务器服务器被黑~那么用户的信息将毫无保留的展现在黑客面前...为了解决这个弊端,现在大多数都会将信息进行MD5加密.如"Vicky"与"123456"加密后,会生成16位或者32位字符串.而黑客即便获得这些数据也无法使用...
MD5是常用的加密方法,这里主要讲述JDK中的java.security.MessageDigest加密方式!
- @Test
- publicvoidtestMD(){
- try{
- Stringusername="Vicky";
- MessageDigestmessageDigest=MessageDigest.getInstance("MD5");
- messageDigest.update(username.getBytes());
- StringusernameMD5=messageDigest.digest().toString();
- System.out.println(usernameMD5);
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
打印的是:[B@107077e,这是因为输出的是byte[](messageDigest.digest()得到的是个二进制byte数组,有可能某些byte是不可打印的字符。)...我们可以使用Base64来处理byte[]
- @Test
- publicvoidtestMD(){
- try{
- Stringusername="Vicky";
- MessageDigestmessageDigest=MessageDigest.getInstance("MD5");
- messageDigest.update(username.getBytes());
- System.out.println(Base64.encode(messageDigest.digest()));
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
打印的是:AgwpBZPO+ErqxOosJp0ybQ==
当然我们可以编写函数,处理二进制转hex字符串.
如:
- privateStringtoHex(bytebuffer[]){
- StringBuffersb=newStringBuffer(buffer.length*2);
- for(inti=0;i<buffer.length;i++){
- sb.append(Character.forDigit((buffer[i]&240)>>4,16));
- sb.append(Character.forDigit(buffer[i]&15,16));
- }
- returnsb.toString();
- }
编写测试语句
- @Test
- publicvoidtestMD(){
- try{
- Stringusername="Vicky";
- MessageDigestmessageDigest=MessageDigest.getInstance("MD5");
- messageDigest.update(username.getBytes());
- System.out.println(toHex(messageDigest.digest()));
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
打印:020c290593cef84aeac4ea2c269d326d,返回的是32位的字符串!!!
这样我们便可以直接使用JDK为我们提供的加密类与函数了!
MessageDigest不仅仅只为我们提供了"MD5"加密,还提供了"SHA-1"
创建的方法只为: MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
MD5与SHA-1的区别为:MD5是16位,SHA是20位(这是两种报文摘要的算法)
难道MessageDigest 只能用作数据加密吗?如何使用MessageDigest生成安全令牌!!!
转:http://blog.csdn.net/eclipser1987/article/details/5158784
分享到:
相关推荐
7.3.3 java.security.MessageDigest 122 7.3.4 java.security.Signature 123 7.3.5 算法参数 124 7.3.6 java.security.Key和java.security. spec.KeySpec 126 7.3.7 java.security.KeyFactory和java. security....
7.3.3 java.security.MessageDigest 122 7.3.4 java.security.Signature 123 7.3.5 算法参数 124 7.3.6 java.security.Key和java.security. spec.KeySpec 126 7.3.7 java.security.KeyFactory和java. security....
可用于检验消息的完整性,和通过散列密码直接以文本形式保存等,目前广泛使用的算法有MD4、MD5、SHA-1,jdk1.5对上面都提供了支持,在java中进行消息摘要很简单, java.security.MessageDigest提供了一个简易的操作...
java.security包中的MessageDigest类提供了计算消息摘要的方法, 首先生成对象,执行其update( )方法可以将原始数据传递给该对象,然后执行其digest( )方法即可得到消息摘要。
import java.security.MessageDigest; import sun.misc.BASE64Encoder; /** * * @author * 版本号:CATTSOFT 1.2.0 * 日期:2009年3月8日 * 功能:对一个字符串进行md5加密 */ public class EncryptUtil { ...
import java.security.MessageDigest; import org.apache.commons.codec.binary.Hex; import org.apache.commons.codec.digest.DigestUtils; /** *MD5计算工具 xuxile 2017-09-13 */ public ...
Java 中文件的MD5和SHA-1的研究 Java中提供了一个类java.security.MessageDigest类是一种提供密码安全消息摘要如SHA-1和MD5功能的引擎类。不需要额外使用第三方组件,且支持超大文件。
ava.security.MessageDigest类用于为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。简单点说就是用于生成散列码。信息摘要是安全的单向哈希函数,它接收任意大小的数据,输出固定长度的哈希值。关于信息摘要...
import java.security.*; import java.util.*; /** * */ public class MD5 { private String inStr; private MessageDigest md5; /** * Constructs the MD5 object and sets the string whose MD5 is to be ...
java.security.MessageDigest; MessageDigest 类为应用程序提供了消息处理计算的有用性,例如 SHA-1 或 SHA-256。 消息摘要是安全的单向散列容量,它采用任意大小的信息并产生固定长度的散列值。 导入 java.math....
最近在学习微信小程序,遇到的第一个问题就是需要配置服务器 关于这个服务器的配置我也是绕了好多弯路,说白了...import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java
MD5的方式加密数据 通过导入一个 import java.security.MessageDigest;的包来实现 MessageDigest mdInst = MessageDigest.getInstance("MD5"); 使用这个方法
在网上查了一下,在网上收集了Java...import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Utils { public static void main(String[] args){ System.out.println
在Android开发过程中加密密码常常采用md5加密方式,然而如果... import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5 { //密码加密 与php加密一致 public s
import java.security.*; import java.security.spec.*; class MD5_Test{ public final static String MD5(String s){ char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd...
Android MD5加密算与J2SE平台一模一样,因为Android 平台支持 java.security.MessageDigest这个包。实际上与J2SE平台一模一样。 算法签名: 代码如下:String getMD5(String val) throws NoSuchAlgorithmException ...
java.security包中的MessageDigest类提供了计算消息摘要的方法,本文将详细介绍,需要了解的朋友可以参考下
增加 java.security.PublicKey 的子类 SM2PublicKey 增加 java.security.PrivateKey 的子类 SM2PrivateKey 全功能支持 SM3withSM2 算法的 X.509 证书结构体解释与密码运算 支持 BKS、PKCS#12 KeyStore 生成、解释、...
import java.io.IOException; import java.io.UnsupportedEncodingException;... import java.security.MessageDigest; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.crypto.Ci
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Sha256 { public static String getSHA256(String str){ MessageDigest messageDigest; String encodestr = ...