有关于数据加密的讨论 这是发生在我面试的时候,一个人问我,是否进行数据加密,由于我做的项目纯粹是练习所学的知识,所以我哑口无言,因此希望有实战经验的前辈们给我讲一下这方面应该怎么做,先谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 按我理解就是 y=f(x)x是原文 y是密文x与y之间是一一映射关系f是转换逻辑 是加密的关键 比如最简单的异或等等 大致问题有三个1,加密的作用2,在开发j2ee程序的时候是如何加密的?3,如果数据存入数据库之前加密,那么加密的数据如何在查找的时候恢复?谢谢啊,我没说清楚。 是否进行数据加密你要回答,需要加密1 密码不能明文保存2 重要数据不能明文保存3 用户与服务器的通讯数据不能明文传输上面3种的安全性逐步提高1 可以采用 MD5 单向加密算法解决,保证用户的密码明文不会被窃取2 采用 RSA 等可逆加密算法,保证重要数据只有重要用户可见3 可采用 https , 也可采用 VPN 等技术进行数据加密传输 楼上的正解了!加密肯定是需要的了!j2ee基本上都是B/S形式的,只要和网络交互,就肯定存在安全问题我做的项目基本上都是MD5加密,也有用https的,对于楼上说的RSA,在做过的项目中也就是给每个用户加上访问权限,权限不同,所能够利用的功能就不同 那是当然的了如2楼所举的例子:y=f(x)如果f为加密函数,那么解密时就是求它的反函数x=f-1(y)有加密就存在解密,加密是为了让关系外的用户不可知,解密是为了只让关系用户可知关系用户需要拥有解密密钥,否则正如你说的加密可能失去意义但是实际情况往往比这复杂,各种加密算法虽然都是基于这种加密与解密进行的,但原理各不相同例如MD5,就算拿到密钥,求出反函数x=f-1(y)的可能性也微乎其微,这是算法出于安全性考虑的,也就是说它只能正向运算y=f(x),反过来不行。给你举个例子说明一下它的用处比如存储用户密码,这个密码可能相当重要,比如关系到一家老小,千万家产,国家前途,政府机密文件等等,反正你自己感觉重要就对了,如果直接将密码用明文的形式存在服务器上,数据库中,你就天天提心吊胆吧,说不定什么时候就会被黑。这种情况我们可以用md5算法,只将用户密码生成的摘要,也就是y放在数据库中,用户要登陆验证,根据他输入的报文x,用算法求出y,与库中的摘要进行比较认证,这样一来,密码x永远都掌握在用户手中,服务商只拿y,即使服务商出了什么问题也不大可能通过y还原出x各种加密算法原理不同,适用的场合也不同,要根据你的需要选择java.security.*是安全相关的包,你可以研究一下再给你一段md5算法参考一下 public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException { String str = EncoderByMd5("12345"); //12345为密码 System.out.println(str); System.out.println(checkpassword("12345", str)); }/** *//**利用MD5进行加密 * @param str 待加密的字符串 * @return 加密后的字符串 * @throws NoSuchAlgorithmException 没有这种产生消息摘要的算法 * @throws UnsupportedEncodingException */ public static String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException...{ //确定计算方法 MessageDigest md5=MessageDigest.getInstance("MD5"); BASE64Encoder base64en = new BASE64Encoder(); //加密后的字符串 String newstr=base64en.encode(md5.digest(str.getBytes("utf-8"))); return newstr; }/** *//**判断用户密码是否正确 * @param newpasswd 用户输入的密码 * @param oldpasswd 数据库中存储的密码--用户密码的摘要 * @return * @throws NoSuchAlgorithmException * @throws UnsupportedEncodingException */ public static boolean checkpassword(String newpasswd,String oldpasswd) throws NoSuchAlgorithmException, UnsupportedEncodingException...{ if(EncoderByMd5(newpasswd).equals(oldpasswd)) return true; else return false; } 有没有这方面的书可以看下,或是java网站防黑客的,我认识一个hacker,他总说今天黑了这个网站,明天黑了那个网站,所以我想,好好看看如何使自己做的网站安全是很重要的,不知道企业都怎么做的? 你可以到网站上下去,网站安全,密码学等,或找哪个hacker问问主要攻击网站哪些漏洞,针对学,估计见效快 K MD5已经被山大那个王晓云证明存在强碰撞了SHA目前还是安全的 solr 请教排序问题 新人问用href传递参数给controller问题 spring配置文件中的ref 将中文写入cookie后变成乱码的问题 类似于万年历 带有日程管理 HttpURLConnection 乱码问题,又是乱码,烦躁!! JB2005中调用以JDBC连接 MS SQLSERVER2000的存储过程为数据源的水晶报表的问题!! using是做什么用的 关于javamail的问题? 写了这么久的JSP,最近感觉没有进步,哪位能够指点迷途?多谢!!! 抽个把小时做了个小工具,可能测试页面的时候可以用上。 程序员的道路该继续走吗?
y=f(x)x是原文 y是密文
x与y之间是一一映射关系
f是转换逻辑 是加密的关键 比如最简单的异或等等
1,加密的作用
2,在开发j2ee程序的时候是如何加密的?
3,如果数据存入数据库之前加密,那么加密的数据如何在查找的时候恢复?
谢谢啊,我没说清楚。
2 重要数据不能明文保存
3 用户与服务器的通讯数据不能明文传输上面3种的安全性逐步提高1 可以采用 MD5 单向加密算法解决,保证用户的密码明文不会被窃取
2 采用 RSA 等可逆加密算法,保证重要数据只有重要用户可见
3 可采用 https , 也可采用 VPN 等技术进行数据加密传输
加密肯定是需要的了!j2ee基本上都是B/S形式的,只要和网络交互,就肯定存在安全问题
我做的项目基本上都是MD5加密,也有用https的,
对于楼上说的RSA,在做过的项目中也就是给每个用户加上访问权限,权限不同,所能够利用的功能就不同
如2楼所举的例子:y=f(x)
如果f为加密函数,那么解密时就是求它的反函数x=f-1(y)有加密就存在解密,加密是为了让关系外的用户不可知,解密是为了只让关系用户可知
关系用户需要拥有解密密钥,否则正如你说的加密可能失去意义但是实际情况往往比这复杂,各种加密算法虽然都是基于这种加密与解密进行的,但原理各不相同
例如MD5,就算拿到密钥,求出反函数x=f-1(y)的可能性也微乎其微,这是算法出于安全性考虑的,
也就是说它只能正向运算y=f(x),反过来不行。给你举个例子说明一下它的用处
比如存储用户密码,这个密码可能相当重要,比如关系到一家老小,千万家产,国家前途,政府机密文件等等,
反正你自己感觉重要就对了,如果直接将密码用明文的形式存在服务器上,数据库中,你就天天提心吊胆吧,
说不定什么时候就会被黑。这种情况我们可以用md5算法,只将用户密码生成的摘要,也就是y放在数据库中,
用户要登陆验证,根据他输入的报文x,用算法求出y,与库中的摘要进行比较认证,这样一来,密码x永远都掌握在
用户手中,服务商只拿y,即使服务商出了什么问题也不大可能通过y还原出x各种加密算法原理不同,适用的场合也不同,要根据你的需要选择
java.security.*是安全相关的包,你可以研究一下再给你一段md5算法参考一下 public static void main(String[] args) throws NoSuchAlgorithmException,
UnsupportedEncodingException {
String str = EncoderByMd5("12345"); //12345为密码
System.out.println(str);
System.out.println(checkpassword("12345", str)); }/** *//**利用MD5进行加密
* @param str 待加密的字符串
* @return 加密后的字符串
* @throws NoSuchAlgorithmException 没有这种产生消息摘要的算法
* @throws UnsupportedEncodingException
*/
public static String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException...{
//确定计算方法
MessageDigest md5=MessageDigest.getInstance("MD5");
BASE64Encoder base64en = new BASE64Encoder();
//加密后的字符串
String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));
return newstr;
}/** *//**判断用户密码是否正确
* @param newpasswd 用户输入的密码
* @param oldpasswd 数据库中存储的密码--用户密码的摘要
* @return
* @throws NoSuchAlgorithmException
* @throws UnsupportedEncodingException
*/
public static boolean checkpassword(String newpasswd,String oldpasswd) throws NoSuchAlgorithmException, UnsupportedEncodingException...{
if(EncoderByMd5(newpasswd).equals(oldpasswd))
return true;
else
return false;
}
SHA目前还是安全的