加密算法 -- softwbc 发布于:2017年12月27日 浏览量:1586  |

一、加密算法

1.1Base64加密
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bitUUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,需要解码后才能阅读。

转码过程例子:

3*8=4*6

内存1个字节占8

转前: s 1 3

先转成ascii:对应 115 49 51

2进制: 01110011 00110001 00110011

6个一组(4组) 011100110011000100110011

然后才有后面的 011100 110011 000100 110011

然后计算机是88位的存数 6不够,自动就补两个高位0

所有有了高位补0

科学计算器输入 00011100 00110011 00000100 00110011

得到 28 51 4 51

查对下照表 c z E z

1.1.2       MD5算法(信息摘要算法5)哈希算法

输入任意长度的信息,经过处理,输出128位的信息

MD5Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2MD3MD4

MD5算法具有以下特点

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1RIPEMD以及Haval等。

用途

一致性验证(下载的文件,附带MD5,有修改再计算MD5就跟下载的不一样了)

数字签名

安全访问验证:登录密码(无法反推,没有反函数,数学上说原始字符串有无穷多个)

原理

MD5512位分组来处理输入的信息,且每一分组又被划分为1632位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

1、填充

对信息长度填充,使其位长对512求余的结果等于448

填充的方法如下:

1) 在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。

2) 在这个结果后面附加一个以64位二进制表示的填充前信息长度(单位为Bit),如果二

进制表示的填充前信息长度超过64位,则取低64位。

经过这两步的处理,信息的位长=N*512+448+64=(N+1*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。

2、记录信息长度

64位来存储填充前信息长度。这64位加在第一步结果的后面,这样信息长度就变为N*512+448+64=(N+1)*512位。

3、装入标准的幻数

标准的幻数是(A=(01234567)16B=(89ABCDEF)16C=(FEDCBA98)16D=(76543210)16)。如果在程序中定义应该是(A=0X67452301LB=0XEFCDAB89LC=0X98BADCFELD=0X10325476L)

4、四轮循环运算

循环的次数是分组的个数(N+1)

如果已经是最后一个分组,则这4个变量为最后的结果,即MD5


1.1      对称加密

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。

在对称加密算法中常用的算法有:DES3DESTDEABlowfishRC2RC4RC5IDEASKIPJACKAES等。

1.1.1       DESData Encryption Standard,数据加密标准)

是一种使用密钥加密的块算法,在二进制级别:替代模糊,增加分析的难度

该算法使用64位密钥(其中包含8位奇偶校验,实际密钥长度为56位)对以64位为单位的块数据加密,产生64位密文数据,然后使用相同的密钥进行解密。

密钥只有通信双方知晓,不对第三方公开。

 

算法描述

1、输入64位明文数据,并进行初始置换IP

2、在初始置换IP后,明文数据再被分为L0R0左右两部分,每部分32

3、在秘钥的控制下,经过16轮运算(f)

416轮后,左、右两部分交换,并连接再一起,再进行逆置换

5、输出64位密文

1.1.2       AESAdvanced Encryption Standard,高级加密标准)

AES算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。

 

1.2      非对称加密

非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。


 

非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。

在非对称加密中使用的主要算法有:RSAElgamal、背包算法、RabinD-HECC(椭圆曲线加密算法)等。

1.1.1       RSA

RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

 

http://blog.163.com/chengwei_1104/blog/static/53645274201331042117390/

关于我们 |  广告服务 |  联系我们 |  网站声明

Copyright © 2015 - 2016 DISPACE.NET |  使用帮助 |  关于我们 |  投诉建议

京ICP备13033209号-2