极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 32088|回复: 12

Arduino 的MD5库

[复制链接]
发表于 2014-11-7 09:13:54 | 显示全部楼层 |阅读模式
这是来自 http://playground.arduino.cc/Main/LibraryList 的Arduino MD5库【参考1】。我实验了一下挺好用的。

#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 world");
  //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 world";
  unsigned char* hash2=MD5::make_hash(test);
  md5str=MD5::make_digest((unsigned char*)hash2, 16);
  Serial.println(md5str);   

}

void loop()
{
}

运行结果




这个结果和我在一个在线MD5的网站【参考2】计算结果是一致的


例子下载
MD5_Hash

我只是简单的测试了一下对Char做MD5,头文件中的另外几个函数的用法没搞清楚。从经验上来看,应该是能够不断累积计算一系列MD5值(比如说刚开始有个字符串"ABC"后来又来了一个字符串“DEF”可以继续加入计算中)。试验了一下没搞清楚。

static const void *body(void *ctxBuf, const void *data, size_t size);
static void MD5Init(void *ctxBuf);
static void MD5Final(unsigned char *result, void *ctxBuf);
static void MD5Update(void *ctxBuf, const void *data, size_t size);

参考:
1.https://github.com/tzikis/ArduinoMD5/ 完整代码下载 ArduinoMD5-master
2.http://md5calculator.chromefans.org/ 一个MD5在线计算网站

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-11-9 21:21:17 | 显示全部楼层
md5算法是目前国际常用的椭圆加密算法之一(就是说计算出来的哈希值很难或者说目前的技术几乎无法被直接反推出原始值,只有几年前山东大学的王小云教授找到一个最短的碰撞算法)
目前还是各大论坛等系统的加密方式。
ARDUINO做这方面加密的函数出现 意味着单片机U盾类产品走下了神坛。 这种电子令牌以后不再是专业加密机构的工具了
也许以后大家开发出一套PC软件 自己再配上一个USB狗 实现加密和正版控制。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-9 21:23:12 | 显示全部楼层
darkorigin 发表于 2014-11-9 21:21
md5算法是目前国际常用的椭圆加密算法之一(就是说计算出来的哈希值很难或者说目前的技术几乎无法被直接反推 ...

是的啊,用这个算法可以做个“电子令牌”类似的东西
回复 支持 反对

使用道具 举报

发表于 2014-11-10 00:05:50 | 显示全部楼层
zoologist 发表于 2014-11-9 21:23
是的啊,用这个算法可以做个“电子令牌”类似的东西

稍微对公布的公钥进行修改 就是自己的电子令牌 或者做一些结果的变换
比如调换其中几位的值。
还可以把部分上位机程序代码放在盾里面 只要上位机给的SN正确 下位机附上那部分代的机器码
(这个貌似是目前最流行的硬件狗的原理 这样几乎无法破解 除非软件公司出了内鬼算法失密)
回复 支持 反对

使用道具 举报

发表于 2014-11-10 00:07:32 | 显示全部楼层
还有个过瘾的应用 就是云计算 做可扩容计算库
之前国内有个网站叫做 CMD5 提供的是很多哈希对应的可用碰撞
不过大多数高复杂度的碰撞都是要钱的。 自己做的话 用一堆单片机自动计算 似乎也蛮过瘾的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-10 08:29:10 | 显示全部楼层
darkorigin 发表于 2014-11-10 00:07
还有个过瘾的应用 就是云计算 做可扩容计算库
之前国内有个网站叫做 CMD5 提供的是很多哈希对应的可用碰撞 ...

用单片机做碰撞不太现实.....速度太慢,单片机算个1个小时未必顶得上x86算5分钟哎。

你说的碰撞网站我看过,后台有一个计算好的库,进去查找就可以的。

我觉得可以用 qqmail 模拟一个:每天都计算出很多,然后存储在qqmail中,再利用它的全文查找功能来搜索。

回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-10 08:31:03 | 显示全部楼层
darkorigin 发表于 2014-11-10 00:05
稍微对公布的公钥进行修改 就是自己的电子令牌 或者做一些结果的变换
比如调换其中几位的值。
还可以 ...

还可以把部分上位机程序代码放在盾里面 只要上位机给的SN正确 下位机附上那部分代的机器码
(这个貌似是目前最流行的硬件狗的原理 这样几乎无法破解 除非软件公司出了内鬼算法失密)

好像原理不是这样的哎。他们应该是用时间来生成的。比如:当前是 201411100830+单独的Key 生成的应该是

abcd 同时服务器那边生成的也是 abcd 这样就能对应上
回复 支持 反对

使用道具 举报

发表于 2014-11-10 11:34:12 | 显示全部楼层
zoologist 发表于 2014-11-10 08:29
用单片机做碰撞不太现实.....速度太慢,单片机算个1个小时未必顶得上x86算5分钟哎。

你说的碰撞网站我 ...

这个就是无限扩容,类似于计算网络之类的东东  每个ARDUINO就是一个网络节点
中心服务器用大型数据库

CMD5是国内最大的MD5碰撞库 但是好多哈希都是收费的
回复 支持 反对

使用道具 举报

发表于 2014-11-10 11:43:42 | 显示全部楼层
zoologist 发表于 2014-11-10 08:31
还可以把部分上位机程序代码放在盾里面 只要上位机给的SN正确 下位机附上那部分代的机器码
(这个貌似是 ...

早期常见方式: 自己定义或者修改一个椭圆算法 可能是MD5或者其他公开算法的秘钥,然后做点简单的换算 比如移位 异或或者调换位置
这样的好处是开发难度很小 坏处是因为PC程序自己要计算出值 这个值是会出现在内存单位里的 可以被读取,程序代码页可以被爆破 从而越过版权检查。
升级版就是用网络 你说的那种 服务器计算,然后本地单片机值被读出比对,同样 对于机器代码JZ JNZ 可以被直接替换为JUMP 还是可以被爆破
但是程序部分核心代码 比如5K-10K大小的部分之类的 以二进制流存在于单片机
然后PC端根据客户输入的SN 计算出哈希 传递给单片,吻合则出代码到内存不吻合则直接出无效值。
这个可以设置某DLL都以二进制流存在于单片机 执行某一功能就会检查一次
破解起来 需要调试高手反复的弄 自己用可以 传播出去就很难了
回复 支持 反对

使用道具 举报

发表于 2014-11-10 11:44:28 | 显示全部楼层
zoologist 发表于 2014-11-10 08:31
还可以把部分上位机程序代码放在盾里面 只要上位机给的SN正确 下位机附上那部分代的机器码
(这个貌似是 ...

你说的这种更类似于网游的盾
网银的盾似乎更复杂。。。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-10 13:20:20 | 显示全部楼层
darkorigin 发表于 2014-11-10 11:43
早期常见方式: 自己定义或者修改一个椭圆算法 可能是MD5或者其他公开算法的秘钥,然后做点简单的换算 比 ...

看你说修改算法,我想起来一个朋友业余时间研究还原卡的破解,后来他笔记本被偷了。他说感觉是专门盯着他下手的,具体怎么丢的没问。结果没多久,搞杀毒软件的朋友找他,说他们反编译一个新的穿透病毒,发现其中算法的一个密钥是他常用的(好像是他生日),然后问问他怎么回事.....
回复 支持 反对

使用道具 举报

发表于 2014-11-11 01:13:29 | 显示全部楼层
zoologist 发表于 2014-11-10 13:20
看你说修改算法,我想起来一个朋友业余时间研究还原卡的破解,后来他笔记本被偷了。他说感觉是专门盯着他 ...

很多年前 大约是2001年左右 那时候在大学就喜欢搞黑软 从那时候的 黑洞2K 冰河 玩到后面的灰鸽子
泡安全焦点也泡了快4年 里面的工具几乎全部下载过
大学毕业之后还黑过学校的WEB服务器。。。
哎 算法研究到没啥研究 只是对黑软什么的感兴趣
然后还有就是 用各种反编译器来搞别人的程序 还有脱壳 汉化之类的事情。。。
发现最牛X的软件不是OS (其实OS就是一堆软件的混合体  好吧内核我没研究过 也没想过 没那水平)
居然是GHOST  各种脱壳工具 汉化工具硬是找不到任何可以修改的部分(这也是目前没人汉化过的软件之一吧)
由于要搞黑软 为了给自己的木马免杀。研究了一段时间的花指令。加壳。。。
哎~~~~~现在都快忘光了 只记得一些原理  很多工具现在也都因为OS版本问题不能用了。。。
回复 支持 反对

使用道具 举报

发表于 2014-11-11 01:16:58 | 显示全部楼层
zoologist 发表于 2014-11-10 13:20
看你说修改算法,我想起来一个朋友业余时间研究还原卡的破解,后来他笔记本被偷了。他说感觉是专门盯着他 ...

刚看了下安全焦点  哎 几乎没更新过了 09年之后。。。。曾经  和绿盟 并称 黑软的牛儿级站点。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 19:35 , Processed in 0.086330 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表