java加密的几种方式
基本的单向加密算法:
BASE64 严格地说,属于编码格式,而非加密算法
MD5(Message Digest algorithm 5,信息摘要算法)
SHA(Secure Hash Algorithm,安全散列算法)
HMAC(Hash Message Authentication Code,散列消息鉴别码)
复杂的对称加密(DES、PBE)、非对称加密算法:
DES(Data Encryption Standard,数据加密算法)
PBE(Password-based encryption,基于密码验证)
RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)
DH(Diffie-Hellman算法,密钥一致协议)
DSA(Digital Signature Algorithm,数字签名)
ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)
代码参考:
/**
* BASE64加密
*
* @param key
* @return
* @throws Exception
*/
public static String encryptBASE64(byte key) throws Exception {
return (new BASE64Encoder()).encodeBuffer(key);
}
/**
* MD5加密
*
* @param data
* @return
* @throws Exception
*/
public static byte encryptMD5(byte data) throws Exception {
MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);
md5.update(data);
return md5.digest();
}
/**
* SHA加密
*
* @param data
* @return
* @throws Exception
*/
public static byte encryptSHA(byte data) throws Exception {
MessageDigest sha = MessageDigest.getInstance(KEY_SHA);
sha.update(data);
return sha.digest();
}
}
/**
* 初始化HMAC密钥
*
* @return
* @throws Exception
*/
public static String initMacKey() throws Exception {
KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);
SecretKey secretKey = keyGenerator.generateKey();
return encryptBASE64(secretKey.getEncoded());
}
/**
* HMAC加密
*
* @param data
* @param key
* @return
* @throws Exception
*/
public static byte encryptHMAC(byte data, String key) throws Exception {
SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
mac.init(secretKey);
return mac.doFinal(data);
}
最新的java面试题目
文思创新面试归来
今天又面了一家:文思创新起初不是很想去的,因为网上给这公司的评论实在不怎么好. 但后来HR MM说这是个Baidu的项目,会去那边工作,乡下人进城想看看Baidu是怎么工作的,还是答应先试试,没准自己还不行呢. 先说下面试情况: 面试很是在我进行笔试的时候进行的,此时我笔试快做完了,但不好让人家两人等,先面试. 技术上主要是问了我项目经验,以及SSH框架,但看我项目中Struts用的少后,不停的用 ...
精心收集的面试笔试题库,网络上 ...
精心收集的面试笔试题库,网络上很难找到这么齐全的,推荐给大家 软件测试面试题集(部分收集) J2EE经典面试题集(附答案) 分享130道ASP.NET面试题和答案[推 [华为笔试题]华为C/C 笔试题(经 最全的C\C 面试题集三(C\C 试题 最全的C\C 面试题集二(C\C 试题 最全的C\C 面试题集一(C\C 试题 分球问题与解答(“智力题“) 猜数问题 ...
面试拒绝做题目的技术“牛人”
面试拒绝做题目的技术“牛人” 刚才来了一位面试者,面试我们公司的J2EE高级工程师。此人简历上职位软通动力某个支持部门的技术主管。这个家伙,是95年毕业,非IT专业,99年“自学”转入IT行业,从事Java开发(其牛人语)。简历上描述:深刻理解java设计模式和j2ee架构,追求并把握新技术,能够宏观决策架构设计和正确选择实现技术。拥有先进的设计理念,能根据需求,做出可扩展,可配置的框架!写的挺 ...
大家都来说说自己最讨厌的面试题 ...
我先说,楼下接力:简单介绍下你自己简历上都写着呢,作为面试官面试前难道都不看简历?那还要简历做什么?我不明白为什么那么多面试官都爱问这个问题,从我个人面试的经历来说问这个问题的,又在你回答这个问题的时候匆匆翻阅你的简历的人可以认为他之前就没看过你的简历,是对面试者的一种不尊重。凡是遇到这种情况除非各方面的条件真的好的超乎想象(一直没遇到过),否则我是直接pass掉的。我也给别人面试过,面试的前一 ...
相关新闻
面试开发人员的有效方法
当要雇佣开发者时,传统的面试方法显得力不从心,这是必须要面对的现实。你会读简历、电话面试、技术面试、文化适应面试、各方面测试,最后,你基本上跟着自己的感觉走,雇佣了你认为优秀的人,即使这样,也会经常看走眼。情况不太理想,这是因为开发者属于技术性工人,谈话反应不出他或她对所在领域有多精通。 为什么传统面试方法不行呢? 当你要求别人跟你一起面试时,你会给他们多少准备时 ...
美国高级工程师谈Struts 走向
自从2000年Apache Struts出现以来,它在大多数的标准下都运行良好,帮助开发出了许许多多基于Java的Web应用程序。Struts是利用服务器端生成的HTML和客户端验证的Javascript的完美结合,使开发和维护变得更加容易。随着时间的推移,用户对Web应用程序的要求不断增加,Struts 1.0几乎还滞留于原地,给Web开发者留下了越来越多无趣的”衔接”代码,如何才能建立一个完美的 ...
Struts 2.2.1.1 发布
Apache Struts 发布最新的 Struts 2.2.1.1 作为 General Availability 发布版本, GA 命名方式是我们最高的质量级别。Apache Struts 2 一种优雅,可扩展的框架,用于创建企业级应用程序。框架设计符合完整的开发周期,从构建,到部署,再到维护的全过程。本次发布包含 REST Plugin 中Dynamic Method Invocation的一 ...
Apache Struts 2.2.3 发布
Apache Struts 团队发布了最新的 Struts 2.2.3 GA(GA代表最高质量)。下载地址:Apache Struts 2.2 系列对规范的最低要求: Servlet API 2. ...
相关博客
2010年9月几道最新Java面试题
---------九月更新 JAVA面试题带答案的java面试题 欢迎参考 Java的几个基础面试题 带答案的 如下代码中finally中的代码会不会执行? Java里面StringBuilder和St... JAVA和C++区别都有哪些? Struts中DispatchAction和... 如何在Web项目中保护JSP源代码不被未经授... Struts的控制器如 ...
面试题和答案
面试题和答案 IT技术类面试题.Net面试题及答案 java面试题和答案 C#面试题和答案 最全最新的CC++面试题集(CC++试题和部分答案) CC++面试题集(最全的CC++试题集和答案)(续) 百度面试笔试题-2007百度校园招聘笔试题 解答答案 金山笔试题(2007年10月) 腾讯c/c++笔试题 C语言面试题-华为C语言面试题 CC++面试题集(最全的CC++试题集和答案)(续) C++ ...
Struts面试题专栏九月份更新
Struts面试题专栏 Struts中DispatchAction和... Struts的控制器如何知道什么样的信息转发... 介绍一下Struts的Action类 介绍一下Struts的ActionServl... Struts中最核心的类和包有哪些? 如何配置spri ...
MySql面试题九月份更新
MySql面试题专栏 遇到的Mysql的面试题 腾讯公司的一个sql题 如何提高MySql的安全性? MySQL面试题 MYSQL基础面试题 一些关于MySql加速和优化的面试题 MYSQL面试题:十一个高级MySql 面试... ...
-java代码加密
Java 和 JavaScript 是什么关系
关系不大,区别不小
关系:
1,名称上
2,语法上有些相像的地方,这个实际上,很多语言之间都能找出相似之处,算不上什么亲近的关系。
区别:
1,java是编译成字节码,由虚拟机执行,js是解释执行
2,java是面向对象的,强类型语言;javascript也能实现oo的设计思想,然而它是动态类型的,同时也是弱类型(无需声明变量的类型,并且变量的类型可以在运行时改变)。
3,开发方式不一样
4,应用的目标不一样
-java