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

原贴地址:http://www.amobbs.com/thread-5466438-1-1.html

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-05 04:31:11

(转)3DES、AES、RC6、TEA、RSA、MD5、SHA1、SHA256加密源码大聚齐的相关文章

asp中的md5/sha1/sha256算法收集

对于asp这种古董级的技术,这年头想找一些有用的资料已经不容易了,下面是一些常用的加密算法: md5 (将以下代码另存为md5.inc) + ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62

Hash校验工具、MD5 SHA1 SHA256命令行工具

MyHash 检验工具http://www.zdfans.com/html/4346.html HashMyFiles Hash校验工具http://www.nirsoft.net/utils/hash_my_files.html Windows自带MD5 SHA1 SHA256命令行工具 2018年03月07日 01:25:11 Sq-List 阅读数:6257 标签: SHA1MD5SHA256命令行Windows 更多 个人分类: hash加密 certutil -hashfile  <文

用PowerShell的命令行检查文件的校验MD5 SHA1 SHA256

certutil  -hashfile yourfilename MD5 certutil -hashfile yourfilename SHA1 certutil -hashfile yourfilename SHA256 MD5  SHA1 SHA256 字母一定要大写 原文地址:https://www.cnblogs.com/pipci/p/11403418.html

openssl evp 哈希算法(md5,sha1,sha256)

1. 简述 openssl提供了丰富密码学工具,一些常用的哈希算法 比如md5,sha 可以直接用提供的md5.h ,sha.h 接口使用: 为了方便开发者使用,openssl 又提供了一个EVP, evp.h 该文件中提供各种常用工具: man evp 可以得知,evp 是openssl 提供的更高一级的密码学工具, 可以理解为对提供的各种接口的一个封装 EVP文件包含的比较多,本次主要说明EVP提供的哈希算法 2. 示例 sha512代码 使用需要导入evp.h //初始化 EVP_MD_C

[转]加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用

原文链接:http://www.cnblogs.com/sochishun/p/7028056.html 加密技术通常分为两大类:"对称式"和"非对称式". 对称性加密算法:对称式加密就是加密和解密使用同一个密钥.信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了.对称加密算法用来对敏感数据等信息进行加密. 非对称算法:非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私

Windows/Linux命令查看文件MD5,SHA1,SHA256 文件校验

windows: certutil -hashfile yourfilename.ext MD5 certutil -hashfile yourfilename.ext SHA1 certutil -hashfile yourfilename.ext SHA256 Linux: 原文地址:http://blog.51cto.com/sf1314/2123109

C# 之 AES加密源码

using System; using System.Collections.Generic; using System.Linq; using System.Web; using Exam.EncryptPrivate; using System.Text; using System.Security.Cryptography; /// <summary> /// Aes加密.解密,密钥长度256,密钥长度不大于32个字节 /// </summary> public class

nodejs实现md5和SHA256加密

1 const crypto=require('crypto'); 2 3 //var obj=crypto.createHash('md5'); 4 var obj=crypto.createHash('sha256'); 5 6 obj.update('1883263'); 7 8 var str=obj.digest('hex');//hex是十六进制 9 10 console.log(str); 简写版 1 //用 SHA256算法对密码加密,管理员登录不用存储加密后的密码 2 user

Redis源码中探秘SHA-1算法原理及其编程实现

导读 SHA-1算法是第一代"安全散列算法"的缩写,其本质就是一个Hash算法.SHA系列标准主要用于数字签名,生成消息摘要,曾被认为是MD5算法的后继者.如今SHA家族已经出现了5个算法.Redis使用的是SHA-1,它能将一个最大2^64比特的消息,转换成一串160位的消息摘要,并能保证任何两组不同的消息产生的消息摘要是不同的.虽然SHA1于早年间也传出了破解之道,但作为SHA家族的第一代算法,对我们仍然很具有学习价值和指导意义. SHA-1算法的详细内容可以参考官方的RFC:ht