知识大全

知识大全

目前常用的加密体系有哪两种

ALEXANDRA

目前常用的加密体系有哪两种

目前常用的加密体系有哪两种?

A密钥密码体系和公钥密码体系,或者说是对称加密体系与非对称加密体系

密码体制从原理上分为哪两类?

分为: 单钥密码体制和双钥密码体制 区别: 单钥密码体制,加解密钥一样 双钥密码体制,加解密钥不一样

加密技术有哪几种分类

加密技术分为私用密钥加密技术和公开密钥加密技术。其中私用密钥加密技术中最具有代表性的算法是IBM公司提出的DES算法、三重DES算法(是DES加强版)、日本密码学家提出随机化数据加密标准(RDES)、瑞士学者发明的IDEA国际信息加密算法;公开密钥加密技术的核心是运用一种特殊的数学函数(单向陷门函数)。算法有很多,比如著名的背包算法等。目前公认比较安全的是RSA算法及其变种和离散对数算法等等。

数据来源《小议数据加密技术》

现在常用的数据加密算法主要有哪些

用数据库做的md5映射,所以只要他的数据库里有就轻松的破解了,其实你这个问题我在以前就解决了 你可以在md5的结果里再自己做一下简单的变换,比如做一次反转之类的变化 实现起来也很简单,这样当人家不知道你在md5上加了反转 就直接去破解是破不出来的

我写了一段程序,希望对你有点帮助

import java.security.*;

import java.io.*;

import java.util.*;

import sun.misc.BASE64Encoder;

public class MD5

{

public static String creatPassword(String password)throws Exception

{

MessageDigest md = MessageDigest.getInstance("MD5");

md.update(password.getBytes("UTF8"));

byte[] digest = md.digest();

/*在这里随便做点什么变换就可以了,可以自由发挥了,你也可以写一个反转什么的,我这里就简单点写了,注意为了保证md5的碰撞困难,最好不要改变原有的字符集,就是说最好只交换某些字符的位置,不要改变原有的值

还有你在验证的时候也要按照你发挥的方法写*/

byte tt=digest[0];digest[0]=digest[7];digest[7]=tt;

String outp;

outp = new BASE64Encoder().encode(digest);

/*顺便说一下采用BASE64Encoder编码后原本是16位的字符变成了24位,其中前22位是有效位,不是我们常见的16位了

这里也和我们用的数据库破解也不同,变换的过程其实是吧8位的byte只取6位,然后通过加字符长度来实现*/

return outp;

}

public static void main(String args[])throws Exception{

String md=new MD5().creatPassword("message for test");

System.out.println(md);

}

}

再给你一段代码,这段代码中用到的是一种比较安全的方式,理论是使破解不出来的,因为它使用了随机盐对密码加密,对同样一段密文加密的两次结果是不一样的,但是又同样能做登录认证,这样就没办法做数据库去匹配了,有兴趣的话可以研究一下,还有,加密结果是40位

import java.security.*;

import java.io.*;

import java.util.*;

import sun.misc.*;

public class MD

{

//加密

public static String creatPassword(String password)throws Exception

{

SecureRandom random = new SecureRandom();

byte[] salt = new byte[12];

random.nextBytes(salt);

MessageDigest md = MessageDigest.getInstance("MD5");

md.update(salt);

md.update(password.getBytes("UTF8"));

byte[] digest = md.digest();

String outp=new BASE64Encoder().encode(salt);

outp = outp + new BASE64Encoder().encode(digest);

return outp;

}

//认证,gavingPassword是客户输入的密码明文,password是存放的密码的密文

public static boolean authenticatePassword(String gavingPassword,String password ) throws Exception

{

String saltString = password.substring(0,16);

byte[] salt = new BASE64Decoder().decodeBuffer(saltString);

String digest1=password.substring(16);

MessageDigest md = MessageDigest.getInstance("MD5");

md.update(salt);

md.update(gavingPassword.getBytes("UTF8"));

byte[] digest = md.digest();

String digest2 = new BASE64Encoder().encode(digest);

if(digest1.equals(digest2)) return true;

else return false;

}

}

标签: 体系 简述常见的数字加密体系 数据库加密一般分为 数据库加密方式有哪些 数据库加密方法 数据库加密方法有哪几种 mysql密码加密方式 sql数据库加密方式及实例 mysql数据库怎么加密