热搜关键词: 电路基础ADC数字信号处理封装库PLC

rar

3DES、AES、RC6、TEA、RSA、MD5、SHA1、SHA256加密源码大聚齐

  • 1星
  • 2013-08-22
  • 406.05KB
  • 需要1积分
  • 93次下载
标签: 3DES

3DES

AES

AES

RC6

AES

TEA

AES

RSA

RSA

MD5

MD5

SHA1

SHA1

SHA256

SHA256

原作者:win2kddk  前两天想帮朋友做一个ARM/STM32的ISP脱机下载器,想到固件平时是保存在外部SPI  ROM里的需要加密。这两天在网上研究了一下流行的文件加密方法并调试和整理了一下,特此公布。先简单的扫扫盲,大家可以边看边下载呵。

 

DES---研究过加密的朋友十分熟悉,老牌的加密方法了。这是一个可逆的对称加密算法,也是应用最广泛的密钥系统。好像是从1977年美国政府开始采用的。大家都看过U-571吧,DES的思路就是参照二战时期盟军缴获的德军恩格玛加密机,不过DES比那个要NB的多多了。到现在为止,除了差分分析法和线性分析法外只有暴力穷举法了。前两种方法不是密码学家或数学家都不懂呵,不过穷举DES,以现有我们大家都可以掌握的技术手段,恐怕没个几百上千年下不来呵。不过,咱们破解不了,不能说明就没人或没有设备破解不了。正因为如此,所以才衍生出了3重DES加密。常规的DES密钥是64位的(实际上有8位是校验用),而3DES是128位(当然有16位也是校验用)。增加密钥长度并增加运算量来防止破解,并在后来的AES出来之前确定为过度方案。不过现在即便有了AES,3DES也没少用,它依然很NB。

  下载DES.RAR

 

AES---它是一种高级加密标准,也叫Rijndael算法,2002年成为标准。它是用来代替原来的DES加密方法的。它也是一个可逆的对称加密算法。研究过IAP的朋友应该明白,把做好的固件程序通过AES加密后发布,用户可以通过IAP的方式来在线升级程序,而开发者则不必担心自己的生产代码流失。即能加密又能还原,这就是可逆加密算法,这也是我们想用到的。AES在早期的方案征集时就规定了要软硬件可以很好的集成,所以它也比较小,程序量比DES要少一些。

  下载AES.RAR

 

RC6---有个算法RC4听说过吧,在无线传输和串行流传输的加密领域占有相当的分量。据说RC6是同一帮人研究出来的,不过它和RC4没太大关系呵。它是AES方案征集时的候选算法之一,但是没有Rijndael算法那么幸运。RC6据说可以抵抗所有已知的攻击,并能够提供AES所要求的安全性,它也是相当优秀的一种可逆加密算法。不过当初它为什么没能当选为AES算法就不得而知了,不知道当时有没有给评委们足够的商务费用呵。

  下载RC6.RAR

 

TEA---它是一种分组加密算法,也是可逆算法。短小精悍。它的实现非常简单,超不过10行代码。TEA算法每一次可以操作64位(8字节),采用128位(16字节)作为密钥,算法采用迭代的形式,尽管32轮迭代已经足够了,但是最好的迭代轮数是64轮。数据流加密可能比较适合,因为据说早期的QQ采用过TEA加密算法。

  下载TEA.RAR

 

RSA---顶顶有名的非对称公钥加密算法,也许你可能不熟悉,不过网银总应该用过吧,多数都是RSA算法来认证的。1977年就开发出来了,DES时代的东东了。不过用到现在依然坚挺,可见加密强度有多高。呵呵,不过它防解密的原理也很简单:只告诉你两个数相乘后的结果,你能知道原来的两个数是什么吗?RSA的安全性依赖于大数的因子分解,但是并没有理论上可以证明破译RSA的难度与大数分解难度是同样的。它是第一个既能用于数据加密也能用于数字签名的算法,也是可逆算法。不过,在不告诉你密钥的情况下,你就是想什么办法加密后的数据也还原不回去,银行系统用它自有道理呵。告诉你个小秘密,前面说过的RC6好像就是有RSA开发组成员参与搞出来的。不过,RSA也有不少缺点。它受到素数产生技术的限制,产生密钥时很麻烦;出于安全性考虑,分组长度至少也要600位以上,运算代价很高、速度比较慢,比DES之类的对称算法要慢的多。它最大的缺点是需要生成大素数及大数取模时可能会产生特别大的数据量,这些都很耗费时间,生成复杂密钥时在单片机上运行可能都不止10分钟,所以解密时还是尽量让PC或服务器来做吧。

  下载RSA.RAR

 

MD5---非常著名的哈希算法,不可逆算法。网站登录、操作系统的用户认证、文件完整性和数字签名等领域广泛应用。不可逆算法一般做的都比较绝,例如彩虹加密狗,只告诉你一个余数,你能知道原来的除数和被除数吗?只把运算过的数据相比较,而不非得知道原数据,这样就完成了认证过程。要想破解MD5的密码,即使采用现在最快的巨型计算机,据说也要运算100万年以上。不过,加密和解密都是数学领域的竞赛,每一种加密算法都或多或少的存在漏洞或缺陷,MD5看上去真那么牢不可破吗?和MD5同样有名的是山东大学的王小云教授。在2004年的国际密码大会上王小云宣布了她的研究小组完成了对MD5杂凑函数的杂凑冲撞,也就是从理论上说使用MD5的数字签名可以伪造。这也意味着MD5可能需要和其他加密算法共用才可以保证数字签名的安全。不过,说MD5已被破解,那也有些杞人忧天了。可以肯定的告诉你,网络上所有针对MD5提供的破解服务,全部都是查询用字典法暴力破解后的数据包,没有一个是真正伪造出来的数字签名,那些号称有几百亿条的记录对MD5庞大算法来说太小了。试想想,动用美国军方的巨型计算机,利用王小云研究理论,来破解我们的一个单片机或网站认证程序?没必要吧。所以MD5依然可用呵,只不过再加上3DES、AES或SHA来防止字典就更好了。

  下载MD5.RAR

 

SHA---著名的哈希算法,不可逆算法。也是多用在数字签名上。SHA-1和MD5一样,也被王小云教授找出杂凑冲撞的漏洞,不过也是停留在理论上的。SHA-256是很NB的,它光密钥就有64个long,恐怕想要破解已经是天文数字了。最NB的是SHA-512,咱们这里没有收录,这里恐怕还没有人能用得上。

  下载SHA-1.RAR

  下载SHA-256.RAR

 

好了,先介绍到这里,一字一字的打真不容易呵。以上所有的程序均为C源程序,不用其他文件,里面都附带了测试程序,在KEIL  4.21上跑过仿真,放心使用。程序大多不是我自己编的,有C++的源程改的,也有别人的C源程。为了尊重别人的劳动成果,里面会带有人家的名字。我只是做了整理和调试。

  例如TEA的测试程序:

  void  TEA_Test(void)

  {

            unsigned  char  dat[16]=\"0123456789ABCDEF\";

            unsigned  char  TEA_key[16];

            memcpy(TEA_key,\"0123456789abcdef\",16);//做运算之前先要设置好密钥,这里只是设置密钥的DEMO。

 

            TEA_Encrypt(dat,TEA_key);        //TEA加密,数组dat里面的新内容就是加密后的数据。

            TEA_Decrpyt(dat,TEA_key);        //密文数据存放在dat里面,经TEA解密就能得到之前的明文。

  }

 

DES的测试程序:

  void  DES3_Test(void)

  {

            unsigned  char  in_buf[8]  =  \"ABCDEFGH\";

            unsigned  char  miwen[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

            unsigned  char  out_buf[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

 

            memcpy(DES_key,\"0123456789abcdef\",16);//3DES的密钥是128位的,这里只是设置密钥的DEMO。

           

            DEC3_Encrypt(in_buf,miwen);        //3DES加密

            DEC3_Decrypt(miwen,out_buf);    //3DES解密

  }

 

不用管其他程序是怎么完成的,会用C语言的都能看懂吧。有兴趣和有时间可以研究一下运算程序,深入了解一下加密方法。

 

测试方法与过程:

  DES算法和AES算法都有现成的加密软件,把软仿真计算过的数据和人家的软件做对比,并能解密还原为原数据。

  RC6、TEA、SHA-256暂时没有找到测试软件,通过不同的密钥看到加密后的数据被完全打散或变形,并能还原为原数据(SHA-256除外)。

  RSA也没找到测试软件相对比。实际测试不太复杂的数据加解密数据正常,太复杂的数据用软仿真半小时后解密未果。

  MD5和SHA-1算法也有现成的加密软件,自已计算的数据和人家算过的数据做对比,数据准确。

展开预览

猜您喜欢

推荐帖子 最新更新时间:2024-11-13 06:36

5509 DSP程序中断中使用XF管脚误区
学习DSP,当然是从一些简单的测试程序开始。使一个LED的闪亮是经常用的,但这其中有一个误区,现分析如下,以定时器控制LED灯为例: void main()    {     init_5509();     init_timer();     while(1)          {          asm(" NOP");          }    }
fish001 DSP 与 ARM 处理器
ADI 最新中文资料
ADI 本月最新中文资料已来袭,火速收藏吧!https://ezchina.analog.com/thread/18651 系统方案精选 ADI公司混合动力汽车(HEV)/电动汽车(EV)锂电池管理解决方案 应用笔记AN-1441:AD9361的LVDS接口上的伪随机二进制序列校准AN-1478:满足各类不同系统需求的多种SPI总线隔离方案AN-1536:驱动APTMC120AM20C
法拉牛 模拟电子
MSP430编程时常犯的错误
错误1 Error[Pe127]: expected a statement E:\MSP430\Module\TFT\SD.c 95  Error[Pe018]: expected a ")" E:\MSP430\Module\TFT\SD.c 132 解决:仔细检查下程序,看有没有一些语法上的错误,多加的" ; "就会使程序出现上述错误;或者一些常用语句表达错误。
fish001 微控制器 MCU
数学不是公式,而是一种思维
算法跟数学公式没太大的关系,算法讲究的是逻辑思维能力,其中重点在逻辑思维,不是各种公式,涉及到的数学公式只是都相当简单的小儿科。相信你能学好的。数学不是必须学好的,但是学好数学对理解和编写算法特别有用的,算法就是给你的一种思维,所以你要做的是好好理解并吸收。计算机语言非常之多,不同的领域使用的语言不会一样,一时半会讲不完,这些都是其次,关键是要懂得编程的思想,理解计算机的想法,让计算机按你的想法去
Aguilera DSP 与 ARM 处理器
【众筹】大家愿意帮我完成一个430实验板吗?
本帖最后由 calom1992 于 2014-5-13 22:11 编辑 一、自我介绍论坛里的各位前辈、同学,你们好。我是西安理工大学的一名大二学生,电子信息工程专业。一年前接触51单片机,当时给我的那种震撼的感觉,依然记忆深刻。从流水灯开始,做电子钟,收音机,做循迹车,平衡车……后来又学习了AVR,飞思卡尔的xs128,总之这一年以来,我对嵌入式的热情只增不减。单片机是一个很好的工具,有了它
calom1992 微控制器 MCU
【2022得捷电子创新设计大赛】K210驱动串口
这次准备的作品是准备用迪文屏做核酸检测登记站的作品,首先要解决的是串口通讯的问题,今天抽空熟悉一下开发板,学习了一下K210的基本操作: 首先是学习串口的IO配置,首先在官网找到资料:machine.UART - Sipeed Wiki 根据其他网友的资料结合写了测试的代码如下: import sensor, image, time, lcd from machine im
lugl4313820 DigiKey得捷技术专区
【SAMR21新玩法】5. 图形化编程 -- 呼吸灯1
SAM R21的很多GPIO都支持PWM输出功能 ,所以也可以非常容易的实现呼吸灯功能,只需要周期改变PWM输出的占空比,就可以改变LED的亮度。   在图形化编程中,PWM功能是通过 analog write pin模块实现的。虽然名称是模拟输出,但是实际上是PWM输出。   我们先创建一个变量“亮度”,用来代表PWM输出数值。在MakeCode编程中,允许使用中
dcexpert MicroPython开源版块
分享一下IAR 430 头文件中#define定义的部分解释
在阅读RF_Example_Code_v1.0中头文件cc430x613x.h时发现了几部分的疑问。 首先来看一下cc430x613x.h中的3个#define的例子: #define DEFC(name, address) __no_init volatile unsigned charname @ address; #define DEFW(name, address) __no_ini
fish001 微控制器 MCU

评论

hahahaqwe123
不错,正要用到hash算法
2017-12-20 17:00:22
张清风
资料很全,刚好要用到,仔细研究一下,希望能在32上跑好
2017-12-20 11:42:43
18278380975
可以,非常好!
2017-10-15 15:36:45
ccaayyww
不错,正要用到AES加密算法
2017-09-26 14:53:10
杰123
不错,可以参考算法
2017-09-15 08:57:25
oxlm
资料很全,之前只做了SHA1算法,有这份,可以了解很多种算法
2016-03-28 16:48:50
登录/注册

意见反馈

求资源

回顶部

推荐内容

热门活动

热门器件

随便看看

  • 这是什么原因?
    在F103R8T6上可以正常运行的程序,写到F103C8T6上却不能执行,这是什么原因?可以用JTAG单步执行啊!一直可以执行到主程序的循环中。而且STM32这个单片机复位后的JTAG那几个IO上面不是有特殊的电平信号嘛,初始化了以后这几个IO应该就是通用IO了啊,应该按照我程序设置的电平来输出啊。
  • 电子百强企业标准调整 亏损企业可继续申报
    2006年1月下旬,信产部发出通知,继续进行一年一度面向全行业的电子信息百强企业排序工作。同往年相比,2006年电子信息百强企业的申报条件有所调整,对于开展重大国际并购、技术创新、结构调整等的企业,如果不是连续三年亏损,且亏损额少于净资产的三分之一,在征得当地信息产业主管部门同意后,可继续申报电子信息百强企业排序。   今年在申报表中还增设了“国际化经营投资”指标。日前,部经济体制改革与经济运行司
  • 关于竞赛组织的成功与失败
    如果一场竞赛(可以是电子类、体育类等)因规则或措施制定不恰当,没能把真正的高水准选手选出来,该重新组织竞赛吗?是的,那当然,虽然组织者认识到了没有实现竞赛的预期目标,很想重来一次,可是重新组织竞赛要花费很多的人力物力财力,就说财力吧,学校级别的起码要几万,市一级要10万不算多吧?省一级要百万,国家级那就得上千万上亿了,世界杯呢?那可是多了去了。这么大的一笔资金怎么办?这个问题其实是不容置疑的,但关
  • 对帝都雾霾有感
    山东招远-某一年的十一假期
  • 物联网的飞速发展势必会给创新带来巨大的影响吗?
    [align=center][/align][align=left]十年前,在物联网成为流行词之前,德州仪器公司有一个简单的创意,让开发人员可以更轻松地将复杂的无线电技术(如Wi-Fi®)添加到其嵌入式应用程序中。这一前景令人兴奋。无线连接将为我们的客户打开新的大门,帮助他们收集数据并提供多种多样的新服务。这就像在万维网早期,当时天空就是人们所能到达的极限。Wi-Fi是一种简单的技术选择
  • EMC
  • 同一个电源,单片机能不能直接用MOS管开关部分电路的电源?
  • keil找不到STLINK了
  • 【好书推荐】《电子工程师必备:九大系统电路识图宝典》
  • 坛里有没有在利尔达上班的朋友?

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
×