




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
消息摘要算法-SHA算法实现简述SHA算法分为一代和二代,这个是美国安全局发布的一系列的密码散列算法。基于如下两点安全理由:1、从消息摘要反推输入信息,从计算理论上来说很困难2、想找到两组不同的消息对应到相应的消息摘要,从计算理论上来说一额很困难。对任何消息的变动,都有很高几率产生消息摘要迥异不过这个算法已经不安全了,被中国的教授破解了。这个技术通常用来做数字签名。常见的就是B2B,B2C网站的支付。数据post到支付中心的时候,是发送一些加密串,同时带上签名。而这个签名可以被伪造。所以就不安全了。常见的使用模型1、甲方发布消息摘要算法(就是指定用哪个算法做消息摘要处理),然后对要发布的消息做摘要处理2、甲方将消息以及消息摘要信息(这里大家通常叫摘要信息为数字指纹)发送给乙方3、乙方接收后,用甲方指定的消息摘要算法,对消息进行摘要处理,然后比对是否和发送过来的消息摘要相同。以甄别消息真假先让我们用sun本身的jdk6的代码展示下sha的消息摘要算法javaview plaincopy1. packagecom.ca.test;2. importjava.security.MessageDigest;3. /*4. *下边都是sunjava6支持的消息摘要算法5. *进行sha的消息摘要算法处理6. *authorkongqz7. */8. publicclassSHACoder9. /*10. *SHA-1消息摘要11. *param待处理的消息摘要12. *authorkongqz13. *14. */15. publicstaticbyteencodeSHA(bytedata)throwsException16. 17. /初始化MessageDisgest18. MessageDigestmd=MessageDigest.getInstance(SHA);19. 20. returnmd.digest(data);21. 22. /*23. *SHA-256消息摘要24. *param待处理的消息摘要25. *authorkongqz26. *27. */28. publicstaticbyteencodeSHA256(bytedata)throwsException29. 30. /初始化MessageDisgest31. MessageDigestmd=MessageDigest.getInstance(SHA-256);32. 33. returnmd.digest(data);34. 35. 36. /*37. *SHA-384消息摘要38. *param待处理的消息摘要39. *authorkongqz40. *41. */42. publicstaticbyteencodeSHA384(bytedata)throwsException43. 44. /初始化MessageDisgest45. MessageDigestmd=MessageDigest.getInstance(SHA-384);46. 47. returnmd.digest(data);48. 49. 50. /*51. *SHA-512消息摘要52. *param待处理的消息摘要53. *authorkongqz54. *55. */56. publicstaticbyteencodeSHA512(bytedata)throwsException57. 58. /初始化MessageDisgest59. MessageDigestmd=MessageDigest.getInstance(SHA-512);60. 61. returnmd.digest(data);62. 63. publicstaticvoidmain(Stringargs)throwsException64. Stringstr=java支持的SHA消息摘要算法;65. System.out.println(原文:+str);66. bytedata1=SHACoder.encodeSHA(str.getBytes();67. System.out.println(SHA/SHA1的消息摘要算法值:+data1.toString();68. 69. bytedata2=SHACoder.encodeSHA256(str.getBytes();70. System.out.println(SHA-256的消息摘要算法值:+data2.toString();71. 72. 73. bytedata3=SHACoder.encodeSHA384(str.getBytes();74. System.out.println(SHA-384的消息摘要算法值:+data3.toString();75. 76. 77. bytedata4=SHACoder.encodeSHA512(str.getBytes();78. System.out.println(SHA-512的消息摘要算法值:+data4.toString();79. 80. 81. 控制台输出结果:82. 原文:java支持的SHA消息摘要算法83. SHA/SHA1的消息摘要算法值:B1fb8ee384. SHA-256的消息摘要算法值:B14318bb85. SHA-384的消息摘要算法值:B1a758cb86. SHA-512的消息摘要算法值:B69b332令人遗憾的是这个不支持十六进制的转换。但是SHA-224没人支持咋办?这里bouncy castle又一次的站出来了。他支持了SHA-224的算法实现。代码如下:javaview plaincopy1. packagecom.ca.test;2. importjava.security.MessageDigest;3. importjava.security.Security;4. vider.BouncyCastleProvider;5. importorg.bouncycastle.util.encoders.Hex;6. /*7. *bouncycastle关于SHA224的消息摘要实现8. *authorkongqz9. */10. publicclassSHA224Coder11. /*12. *SHA-224的消息摘要算法实现13. *paramdata待处理的数据14. *returnbyte消息摘要15. *16. */17. publicstaticbyteencodeSHA224(bytedata)throwsException18. 19. /加入对bouncycastle的支持20. Security.addProvider(newBouncyCastleProvider();21. /初始化MessageDigest22. MessageDigestmd=MessageDigest.getInstance(SHA-224);23. /执行消息摘要处理24. returnmd.digest(data);25. 26. /*27. *SHA-224的消息摘要算法实现28. *paramdata待处理的数据29. *returnString十六进制的消息摘要30. *authorkongqz31. */32. publicstaticStringencodeSHA224Hex(bytedata)throwsException33. 34. /执行消息摘要处理35. byteb=encodeSHA224(data);36. 37. returnnewString(Hex.encode(b);38. 39. publicstaticvoidmain(Stringargs)throwsException40. Stringstr=BouncyCast支持的SHA224消息摘要算法;41. System.out.println(原文:+str);42. bytedata1=SHA224Coder.encodeSHA224(str.getBytes();43. System.out.println(SHA-224的消息摘要算法值:+data1.toString();44. 45. Stringdata2=SHA224Coder.encodeSHA224Hex(str.getBytes();46. System.out.println(SHA-224转十六进制的消息摘要算法值:+data2);47. 48. 49. 控制台输出结果:50. 原文:BouncyCast支持的SHA224消息摘要算法51. SHA-224的消息摘要算法值:Bbfbdb052. SHA-224转十六进制的消息摘要算法值:621f3650aa5e604de6ef571372d93e7272fb110ea605d79d6c8ceb43另外Commons codec也提供了对于SHA算法的实现。涵盖了java6所支持的全部的SHA算法。可以参考下DigestUtils类相关SHA算法支持API.commons codec与sun提供的算法无本质差别。只是提供了更加方便的实现通过如上的实验,大家可以看到不同的消息摘要算法长度不同。同时能总结如下:1、sun提供了底层的sha算法实现,缺少sha-224算法,而
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 9973-2025炭素材料透气度试验方法
- GB/T 14071-2025林木品种审定规范
- 应急安全技术培训中心课件
- 新解读《DL-T 790.461-2010采用配电线载波的配电自动化 第4-61部分:数据通信协议 网络层 无连接协议》
- 2025年公务员考试《常识》练习题及参考答案详解1套
- 2024年电工考前冲刺测试卷附答案详解【B卷】
- 2024年执业药师常考点试卷附参考答案详解【培优A卷】
- 花岗石合同(标准版)
- 物业开发合同(标准版)
- 信息系统项目管理师(高级)学习笔记
- 小学生防骗防诈安全教育课件
- 冀教版七年级数学上册《1.7有理数的加减混合运算》同步练习题及答案
- 中外广告史(第三版) 课件全套 何玉杰 第0-11章 绪论、中国古代广告的发展- 日本广告的发展
- 三年级全一册《劳动与技术》第二单元 活动3《创意剪纸》课件
- 肺结节科普宣教
- 义务教育信息科技课程标准(2022年版)解读
- 空调维保项目进度保障计划
- 放射科室风险评估报告
- 各类组织架构图课件
- 创伤性窒息护理课件
- 人口老龄化对寿险产品需求结构的影响
评论
0/150
提交评论