第五十四课--Microduino MD5加密/zh

来自Microduino Wikipedia
跳转至: 导航搜索

目的

本教程将介绍如何使用最常用的加密方法MD5加密,并在Microduino中解释加密的正确性。

MD5加密

介绍:

Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)

对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

优势:

Van oorschot和Wiener曾经考虑过一个在散列中暴力搜寻冲突的函数(brute-force hash function),而且他们猜测一个被设计专门用来搜索MD5冲突的机器(这台机器在1994年的制造成本大约是一百万美元)可以平均每24天就找到一个冲突。但单从1991年到2001年这10年间,竟没有出现替代MD5算法的MD6或被叫做其他什么名字的新算法这一点,我们就可以看出这个瑕疵并没有太多的影响MD5的安全性。上面所有这些都不足以成为MD5的在实际应用中的问题。并且,由于MD5算法的使用不需要支付任何版权费用的,所以在一般的情况下(非绝密应用领域。但即便是应用在绝密领域内,MD5也不失为一种非常优秀的中间技术),MD5怎么都应该算得上是非常安全的了。

弱点:

2004年8月17日的美国加州圣巴巴拉的国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果。宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌,引发了密码学界的轩然大波。(注意:并非是真正的破解,只是加速了杂凑冲撞)

设备


  • 其他硬件设备
    • USB数据连接线 一根
    • 面包板跳线 一盒


程序

#include "MD5.h"
/*
This is en example of how to use my MD5 library. It provides two
 easy-to-use methods, one for generating the MD5 hash, and the second
 one to generate the hex encoding of the hash, which is frequently used.
 */
void setup()
{
  //initialize serial
  Serial.begin(9600);
  //give it a second
  delay(1000);
  //generate the MD5 hash for our string
  unsigned char* hash=MD5::make_hash("Hello Microduino");
  //generate the digest (hex encoding) of our hash
  char *md5str = MD5::make_digest(hash, 16);
  //print it on our serial monitor
  Serial.println(md5str);

  char* test="Hello Microduino";
  unsigned char* hash2=MD5::make_hash(test);
  md5str=MD5::make_digest((unsigned char*)hash2, 16);
  Serial.println(md5str);

}

void loop()
{
}

调试

步骤一:下载代码,运行。如果编译出错的话是因为你本地没有 [ArduinoMD5]库,下载安装好后,再重启IDE就可以了


步骤二: 打开串口通讯,会显示两行密文,如下图:

MicroduinoMD5.jpg

这两个密文就是明文Hello Microduino经过MD5加密后的密文。

步骤三: 证实一下,去md5calculator.chromefans.org 网站证实。

MicroduinoMD5 1.jpg

这个结果和我在这个在线MD5的网站计算结果是一致的

结果

明文Hello Microduino被MD5加密算法加密成了密文,这段被打散的字符串序列很难被倒推回之前的明文,达到加密的目的。

视频