数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。 加密技术通常分为两大类:“对称式”和“非对称式”。 对称式加密就是加密和解密使用同一个密钥,通常称之为“Session Key ”这种加密技术目前被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法,它的Session Key长度为56Bits。 非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。这里的“公钥”是指可以对外公布的,“私钥”则不能,只能由持有人一个人知道。它的优越性就在这里,因为对称式的加密方法如果是在网络上传输加密文件就很难把密钥告诉对方,不管用什么方法都有可能被别到。而非对称式的加密方法有两个密钥,且其中的“公钥”是可以公开的,也就不怕别人知道,收件人解密时只要用自己的私钥即可以,这样就很好地避免了密钥的传输安全性问题。 加密算法 一个加密系统S可以用数学符号描述如下: S={P, C, K, E, D} 其中 P——明文空间,表示全体可能出现的明文集合, C——密文空间,表示全体可能出现的密文集合, K——密钥空间,密钥是加密算法中的可变参数, E——加密算法,由一些公式、法则或程序构成, D——解密算法,它是E的逆。 当给定密钥kÎK时,各符号之间有如下关系: C = Ek(P), 对明文P加密后得到密文C P = Dk(C) = Dk(Ek(P)), 对密文C解密后得明文P 如用E-1 表示E的逆,D-1表示D的逆,则有: Ek = Dk-1且Dk = Ek-1 因此,加密设计主要是确定E,D,K。 RSA是Rivest、Shamir和Adleman提出来的基于数论非对称性(公开钥)加密算法。大整数的素因子难分解是RSA算法的基础。 RSA在国外早已进入实用阶段,已研制出多种高速的RSA的专用芯片。尽管RSA的许多特性并不十分理想,但迫于信息安全的实际需要,许多重要的信息系统还是采用RSA作为基础加密机制。从RSA提出不久,我国有关部门就一直对它进行研究。从应用的角度看,软件实现的RSA已经开始用于计算机网络加密,用来完成密钥分配、数字签名等功能。 除了RSA之外,还有DES(数据加密标准)。尽管DES公开了其加密算法并曾被美国列为“标准”,但很快被废弃。加密技术又回归到“算法保密”的传统上。 常见加密算法 DES(Data Encryption Standard):对称算法,数据加密标准,速度较快,适用于加密大量数据的场合; 3DES(Triple DES):是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高; RC2和 RC4:对称算法,用变长密钥对大量数据进行加密,比 DES 快; IDEA(International Data Encryption Algorithm)国际数据加密算法,使用 128 位密钥提供非常强的安全性; RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,非对称算法; DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准),严格来说不算加密算法; AES(Advanced Encryption Standard):高级加密标准,对称算法,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法; BLOWFISH,它使用变长的密钥,长度可达448位,运行速度很快; MD5:严格来说不算加密算法,只能说是摘要算法 对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。 在MD5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(Bits Length)将被扩展至N*512+448,即N*64+56个字节(Bytes),N为一个正整数。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字节长度=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。(可参见MD5算法词条) SSF33,SSF28,SCB2(SM1):国家密码局的隐蔽不公开的商用算法,在国内民用和商用的,除这些外,都不容许使用其他的; 其它算法,如ElGamal、Deffie-Hellman、新型椭圆曲线算法ECC等。
分享到:
相关推荐
加密算法
C# 常用加密算法 包括MD5 base64 hax等
基于C++实现对常用加密算法改进及对抗思路源码+项目说明(含哈希、对称、校验码、编码格式等加密).zip基于C++实现对常用加密算法改进及对抗思路源码+项目说明(含哈希、对称、校验码、编码格式等加密).zip基于C++...
c#常用加密算法 pdf 对C# 中常用加解密算法进行了实现 直接可以用
常用加密算法
演示常用加密算法 SHA256加盐加密 AES ECB 加密 AES CBC 加密 AES 密钥 初始化向量不够128位,自动填充0,补足128位。 对齐与C库不同的实现。
常用加密算法的java实现总结,常用加密算法的java实现总结,常用加密算法的java实现总结,常用加密算法的java实现总结,常用加密算法的java实现总结
常用加密算法,AES、DES3、RC4、MD5、SHA256; 用VC++6.0编译,包含.h和.lib。
常用加密算法概述
aes des rc6 tea md5 sha1 sha1-6 c语言实现,单片机上测试过。
c#常用的加密算法实现,可逆加密及不可逆加密
加密算法计算器,支持DES 3DES CBC MAC SM2 SM3 SM4 MD5 SHA等 CPU卡,加密算法,java卡类行开发者助手!
一个关于常用加密算法的Demo,里面有很多加密算法的分类,例如MD5,RSA等等
官方提供的常用加密算法、主要应用在wifi加密解密无无效传输通信领域。
简单介绍了常用的几种加密算法 DES;mars;md5;rsa
c#_实现MD5_SHA1_SHA256_SHA512等常用加密算法
对系统资源消耗极低的DES加密算法代码,在普通51单片机上即可实现,仅需4K大小的flash存储,1K大小的ram。操作仅需两个函数,一个加密函数,一个解密函数,使用非常方便。
Java中常用的加密算法应用,MD5!
包含常用到的加密、解密算法的VC++实现,是学习加密解密很好的源码资料。
加密算法计算器,支持DES 3DES CBC MAC SM2 SM3 SM4 MD5 SHA等 是CPU卡,加密机,证书设备,JAVA卡类行开发者学习测试最好助手! 上一个自己是我下载的,再那技术上反编译后修复了写bug后续也会有更新。增加更多算法