最近想总结一下以前用到的密码学知识用java实现,准备汇总成一个系列
初步决定包含以下内容:
- 传输算法Base64
- 验证数据完整性:消息摘要算法
- 对称加密算法
- 非对称加密算法
- 带密钥的消息摘要算法:数字签名算法
- 数字证书
- 安全协议HTTPS
- 热身准备
大部分算法可以通过Sun的JDK实现,但有更简单的第三方包可以帮助我们。
我采用的是commons-codec,下载地址http://commons.apache.org/proper/commons-codec/
下载是最新的commons-codec-1.9.jar
使用commons-codec有很多方便的地方,比如JDK实现MD5算法返回的是byte[],commons-codec可以直接返回String类型,并且支持输入参数为byte[]、String、InputStream等各种形式。
实例里面用到commons-codec会特别说明。
最后介绍密钥的存储形式。
对一个8字节的密钥
用String存储可以表示为String key = "4041424344454647";
用byte[]存储可以表示为byte[] key = new byte[]{0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47};
两者之间可以通过commons-codec的Hex类进行转换
String转换为byte[]
String key = "4041424344454647"; byte[] b = Hex.decodeHex(key.toCharArray());
byte[]转换为String
byte[] key = new byte[]{0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47}; String s = Hex.encodeHexString(key);
- Base64算法实现
介绍第一个算法——Base64。
Base64算法是对一个字符串进行编码和解码,算不上真正的加密算法。
用commons-codec的代码实现
/** * BASE64编码 * @param data * @return */ public static String Base64encode(String data) { try { byte[] b = Base64.encodeBase64(data.getBytes(ENCODING)); return new String(b, ENCODING); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return null; } /** * BASE64解码 * @param data * @return */ public static String Base64decode(String data) { try { byte[] b = Base64.decodeBase64(data.getBytes(ENCODING)); return new String(b, ENCODING); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return null; }
测试代码
String data = "yeliang"; System.out.println("原文:"+data); String encode = Base64encode(data); System.out.println("Base64编码后:"+encode); String decode = Base64decode(encode); System.out.println("Base64解码后:"+decode);
运行结果
原文:yeliang Base64编码后:eWVsaWFuZw== Base64解码后:yeliang
- Base64算法的典型应用
电子邮件传输
数字证书存储
相关推荐
此资源包含完整代码和完整实验报告(加上你的学号姓名即可提交)
现代密码学——古典密码算法(实验报告).doc
此资源包含完整代码和完整实验报告(加上你的学号姓名即可提交)
此资源包含完整代码和完整实验报告(加上你的学号姓名即可提交)
深入浅出密码学——常用加密技术原理与应用Cryptanalysis in simple terms -- principle and application of common encryption technology
此资源包含完整代码和完整实验报告(加上你的学号姓名即可提交)
NULL 博文链接:https://ye-liang.iteye.com/blog/2002828
应用密码学:协议、算法与C源程序(中文版)
MD5、RSA、SHA、CRC32、BlowFish、Base64、DES、Secret、Tiger、GOST、Haval,Ripemd,FileCheck,LoginCalc,StringCalc,ScaleCalc等各类算法的加解密
常用加密算法的java实现总结,常用加密算法的java实现总结,常用加密算法的java实现总结,常用加密算法的java实现总结,常用加密算法的java实现总结
密码学实验——差分与线性分析
应用密码学手册——Handbook of Applied Cryptography
台湾人用的密码学教程,还不错,相信对学密码的朋友能有点用处。
深入浅出密码学——常用加密技术原理与应用Christof Paar,Jan Pelzl 本书拥有的诸多特征使得它成为密码学从业者和学生独一无二的资源—本书介绍了绝大多数实际应用中使用的加密算法,并重点突出了它们的实用性。...
主要介绍了哈希(Hash)算法的相关资料,帮助大家更好的利用python处理密码,感兴趣的朋友可以了解下
此资源包含完整代码和完整实验报告(加上你的学号姓名即可提交)
实现DES算法,并提供加密和解密的程序接口; 设计一个DES算法查看器,可视化输出每轮的子密钥Ki、中间结果(包括Li,Ri,f(Li,Ri),Si)及最终密文; 设计一个文本文件加密器,利用DES对文本文件进行加密和解密;
《深入浅出密码学——常用加密技术原理与应用》教程书籍,学习资源,供学术交流使用。
NULL 博文链接:https://ye-liang.iteye.com/blog/2002980
应用密码学——序列密码PPT