消息摘要算法-SHA算法实现.doc_第1页
消息摘要算法-SHA算法实现.doc_第2页
消息摘要算法-SHA算法实现.doc_第3页
消息摘要算法-SHA算法实现.doc_第4页
消息摘要算法-SHA算法实现.doc_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论