173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

加密算法总结怎么写

keros@mark 2022-10-26 资讯中心

本文目录一览

总结一下PHP中有哪些加密算法技术

1、最普遍用的,md5.

2、其他的如base64等,但这个不严格是加密算法,应该是一种转字符算法,因为可以转回来,而md5是转不回来的。

3、自己编一个,简单思路如下,把待加密的内容,附加各种信息,再用位移等,再用编码转换等做一遍,然后丢弃一部分。这样的话,因为有丢弃,所以无法转回来,就达到加密了。

常用的加密算法有哪些

对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。

对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:

DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。

3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。

aes(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;

aes

常见的非对称加密算法如下:

RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;

DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);

ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。

常用的加密算法有哪些?

对称密钥加密

对称密钥加密 Symmetric Key Algorithm 又称为对称加密、私钥加密、共享密钥加密:这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单的相互推算的密钥,对称加密的速度一般都很快。

分组密码

分组密码 Block Cipher 又称为“分块加密”或“块加密”,将明文分成多个等长的模块,使用确定的算法和对称密钥对每组分别加密解密。这也就意味着分组密码的一个优点在于可以实现同步加密,因为各分组间可以相对独立。

与此相对应的是流密码:利用密钥由密钥流发生器产生密钥流,对明文串进行加密。与分组密码的不同之处在于加密输出的结果不仅与单独明文相关,而是与一组明文相关。

DES、3DES

数据加密标准 DES Data Encryption Standard 是由IBM在美国国家安全局NSA授权下研制的一种使用56位密钥的分组密码算法,并于1977年被美国国家标准局NBS公布成为美国商用加密标准。但是因为DES固定的密钥长度,渐渐不再符合在开放式网络中的安全要求,已经于1998年被移出商用加密标准,被更安全的aes标准替代。

DES使用的Feistel Network网络属于对称的密码结构,对信息的加密和解密的过程极为相似或趋同,使得相应的编码量和线路传输的要求也减半。

DES是块加密算法,将消息分成64位,即16个十六进制数为一组进行加密,加密后返回相同大小的密码块,这样,从数学上来说,64位0或1组合,就有2^64种可能排列。DES密钥的长度同样为64位,但在加密算法中,每逢第8位,相应位会被用于奇偶校验而被算法丢弃,所以DES的密钥强度实为56位。

3DES Triple DES,使用不同Key重复三次DES加密,加密强度更高,当然速度也就相应的降低。

aes

高级加密标准 aes Advanced Encryption Standard 为新一代数据加密标准,速度快,安全级别高。由美国国家标准技术研究所NIST选取Rijndael于2000年成为新一代的数据加密标准。

aes的区块长度固定为128位,密钥长度可以是128位、192位或256位。aes算法基于Substitution Permutation Network代换置列网络,将明文块和密钥块作为输入,并通过交错的若干轮代换"Substitution"和置换"Permutation"操作产生密文块。

aes加密过程是在一个4*4的字节矩阵(或称为体State)上运作,初始值为一个明文区块,其中一个元素大小就是明文区块中的一个Byte,加密时,基本上各轮加密循环均包含这四个步骤:

合并(AddRoundKey):矩阵中的每个字节与该回合密钥做XOR异或运算,其中回合密钥由主密钥通过Rijndael密钥生成方案生成,这个密钥大小跟原矩阵一致。

替换(SubBytes):矩阵中的每个字节通过一个8位查找表对应的特定字节所替换。这里的8位查找表为S-box(Substitution-box, 置换盒),用来模糊密钥与密文之间的关系,实现输入输出的非线性特征。

行混淆(ShiftRows):矩阵中的每一行的各个字节循环向左方位移,位移量随行数递增。列混淆(MixColumns):每一列的四个字节通过线性变换互相结合,即与一个固定的多项式做乘法。

安全性

已知的针对aes唯一的成功攻击是旁道攻击,2005年时使用缓存时序攻击法,破解了一个装载OpenSSL aes加密系统的客户服务器。

针对区块加密系统最常见的方式,是通过对加密循环次数较少的版本尝试攻击,然后改进算法后继续攻击高级版本,目前这个破解方法还不太实用。

另外由于aes的数据结构具有井然有序的代数结构,有一个担心就是相关的代数攻击,目前基于此的有效攻击方法也暂时没有出现。

非对称密钥加密

非对称密钥加密 Asymmetric Key Cryptography 也可称为 Public Key Cryptography 公开密钥加密:需要两个密钥,分为公钥和私钥,一个用作加密而另外一个只能用于解密,而加密的密钥并不能用来解密。

根据此特性,除了加解密的应用外,还可以确保数字签名的功能:某用户用私钥加密明文,任何人都可以用该用户的公钥解密密文,以此判定身份。

对称密钥需要一个安全的渠道可以交换共用的密钥,而非对称密钥可以将加密公钥公开发布;不过公钥加密在计算上相当复杂,性能远比不上对称加密,所以一般会利用公钥加密来交换对称密钥,然后依靠对称密钥来传输具体的信息。

RSA

RSA是由三个人的名字组成 Ron Rivest、Adi Shamir、Leonard Adleman于1977年在MIT提出,并于1987年公布,是目前最常用的公钥加密算法。

RSA算法的核心是极大整数的因式分解,理论基础在于由两个大质数算出乘积很容易,但是要从一个极大整数因式分解得出两个质数却很难。

ECC

ECC即 Elliptic Curve Cryptography 椭圆曲线密码学,是基于椭圆曲线数学建立公开密钥加密的算法。ECC的主要优势是在提供相当的安全等级情况下,密钥长度更小。

ECC的原理是根据有限域上的椭圆曲线上的点群中的离散对数问题ECDLP,而ECDLP是比因式分解问题更难的问题,是指数级的难度。而ECDLP定义为:给定素数p和椭圆曲线E,对Q=kP,在已知P,Q 的情况下求出小于p的正整数k。可以证明由k和P计算Q比较容易,而由Q和P计算k则比较困难。

数字签名

数字签名 Digital Signature 又称公钥数字签名是一种用来确保数字消息或文档真实性的数学方案。一个有效的数字签名需要给接收者充足的理由来信任消息的可靠来源,而发送者也无法否认这个签名,并且这个消息在传输过程中确保没有发生变动。

数字签名的原理在于利用公钥加密技术,签名者将消息用私钥加密,然后公布公钥,验证者就使用这个公钥将加密信息解密并对比消息。一般而言,会使用消息的散列值来作为签名对象。

简述加密技术的基本原理,并指出有哪些常用的加密体制及其代表算法

1、对称加密算法

对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:

DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。

3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。

aes(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;

算法原理

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

2、非对称算法

常见的非对称加密算法如下:

RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;

DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);

ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。

算法原理——椭圆曲线上的难题

椭圆曲线上离散对数问题ECDLP定义如下:给定素数p和椭圆曲线E,对Q=kP,在已知P,Q 的情况下求出小于p的正整数k。可以证明由k和P计算Q比较容易,而由Q和P计算k则比较困难。

将椭圆曲线中的加法运算与离散对数中的模乘运算相对应,将椭圆曲线中的乘法运算与离散对数中的模幂运算相对应,我们就可以建立基于椭圆曲线的对应的密码体制。

区块链之加密原理总结(一)

    先放一张以太坊的架构图:

    在学习的过程中主要是采用单个模块了学习了解的,包括P2P,密码学,网络,协议等。直接开始总结:

                秘钥分配问题也就是秘钥的传输问题,如果对称秘钥,那么只能在线下进行秘钥的交换。如果在线上传输秘钥,那就有可能被拦截。所以采用非对称加密,两把钥匙,一把私钥自留,一把公钥公开。公钥可以在网上传输。不用线下交易。保证数据的安全性。

        如上图,A节点发送数据到B节点,此时采用公钥加密。A节点从自己的公钥中获取到B节点的公钥对明文数据加密,得到密文发送给B节点。而B节点采用自己的私钥解密。

        2、无法解决消息篡改。

    如上图,A节点采用B的公钥进行加密,然后将密文传输给B节点。B节点拿A节点的公钥将密文解密。

        1、由于A的公钥是公开的,一旦网上黑客拦截消息,密文形同虚设。说白了,这种加密方式,只要拦截消息,就都能解开。

        2、同样存在无法确定消息来源的问题,和消息篡改的问题。

        如上图,A节点在发送数据前,先用B的公钥加密,得到密文1,再用A的私钥对密文1加密得到密文2。而B节点得到密文后,先用A的公钥解密,得到密文1,之后用B的私钥解密得到明文。

        1、当网络上拦截到数据密文2时, 由于A的公钥是公开的,故可以用A的公钥对密文2解密,就得到了密文1。所以这样看起来是双重加密,其实最后一层的私钥签名是无效的。一般来讲,我们都希望签名是签在最原始的数据上。如果签名放在后面,由于公钥是公开的,签名就缺乏安全性。

        2、存在性能问题,非对称加密本身效率就很低下,还进行了两次加密过程。

        如上图,A节点先用A的私钥加密,之后用B的公钥加密。B节点收到消息后,先采用B的私钥解密,然后再利用A的公钥解密。

        1、当密文数据2被黑客拦截后,由于密文2只能采用B的私钥解密,而B的私钥只有B节点有,其他人无法机密。故安全性最高。

        2、当B节点解密得到密文1后, 只能采用A的公钥来解密。而只有经过A的私钥加密的数据才能用A的公钥解密成功,A的私钥只有A节点有,所以可以确定数据是由A节点传输过来的。

        经两次非对称加密,性能问题比较严重。

        基于以上篡改数据的问题,我们引入了消息认证。经过消息认证后的加密流程如下:

        当A节点发送消息前,先对明文数据做一次散列计算。得到一个摘要, 之后将照耀与原始数据同时发送给B节点。当B节点接收到消息后,对消息解密。解析出其中的散列摘要和原始数据,然后再对原始数据进行一次同样的散列计算得到摘要1, 比较摘要与摘要1。如果相同则未被篡改,如果不同则表示已经被篡改。

        在传输过程中,密文2只要被篡改,最后导致的hash与hash1就会产生不同。

        无法解决签名问题,也就是双方相互攻击。A对于自己发送的消息始终不承认。比如A对B发送了一条错误消息,导致B有损失。但A抵赖不是自己发送的。

        在(三)的过程中,没有办法解决交互双方相互攻击。什么意思呢? 有可能是因为A发送的消息,对A节点不利,后来A就抵赖这消息不是它发送的。

        为了解决这个问题,故引入了签名。这里我们将(二)-4中的加密方式,与消息签名合并设计在一起。

       在上图中,我们利用A节点的私钥对其发送的摘要信息进行签名,然后将签名+原文,再利用B的公钥进行加密。而B得到密文后,先用B的私钥解密,然后 对摘要再用A的公钥解密,只有比较两次摘要的内容是否相同。这既避免了防篡改问题,有规避了双方攻击问题。因为A对信息进行了签名,故是无法抵赖的。

        为了解决非对称加密数据时的性能问题,故往往采用混合加密。这里就需要引入对称加密,如下图:

        在对数据加密时,我们采用了双方共享的对称秘钥来加密。而对称秘钥尽量不要在网络上传输,以免丢失。这里的共享对称秘钥是根据自己的私钥和对方的公钥计算出的,然后适用对称秘钥对数据加密。而对方接收到数据时,也计算出对称秘钥然后对密文解密。

        以上这种对称秘钥是不安全的,因为A的私钥和B的公钥一般短期内固定,所以共享对称秘钥也是固定不变的。为了增强安全性,最好的方式是每次交互都生成一个临时的共享对称秘钥。那么如何才能在每次交互过程中生成一个随机的对称秘钥,且不需要传输呢?

        那么如何生成随机的共享秘钥进行加密呢?

        对于发送方A节点,在每次发送时,都生成一个临时非对称秘钥对,然后根据B节点的公钥 和 临时的非对称私钥 可以计算出一个对称秘钥(KA算法-Key Agreement)。然后利用该对称秘钥对数据进行加密,针对共享秘钥这里的流程如下:

        对于B节点,当接收到传输过来的数据时,解析出其中A节点的随机公钥,之后利用A节点的随机公钥 与 B节点自身的私钥 计算出对称秘钥(KA算法)。之后利用对称秘钥机密数据。

        对于以上加密方式,其实仍然存在很多问题,比如如何避免重放攻击(在消息中加入 Nonce ),再比如彩虹表(参考 KDF机制解决 )之类的问题。由于时间及能力有限,故暂时忽略。

        那么究竟应该采用何种加密呢?

        主要还是基于要传输的数据的安全等级来考量。不重要的数据其实做好认证和签名就可以,但是很重要的数据就需要采用安全等级比较高的加密方案了。

        密码套件 是一个网络协议的概念。其中主要包括身份认证、加密、消息认证(MAC)、秘钥交换的算法组成。

        在整个网络的传输过程中,根据密码套件主要分如下几大类算法:

        秘钥交换算法:比如ECDHE、RSA。主要用于客户端和服务端握手时如何进行身份验证。

        消息认证算法:比如SHA1、SHA2、SHA3。主要用于消息摘要。

        批量加密算法:比如aes, 主要用于加密信息流。

        伪随机数算法:例如TLS 1.2的伪随机函数使用MAC算法的散列函数来创建一个 主密钥 ——连接双方共享的一个48字节的私钥。主密钥在创建会话密钥(例如创建MAC)时作为一个熵来源。

        在网络中,一次消息的传输一般需要在如下4个阶段分别进行加密,才能保证消息安全、可靠的传输。

        握手/网络协商阶段:

        在双方进行握手阶段,需要进行链接的协商。主要的加密算法包括RSA、DH、ECDH等

        身份认证阶段:

        身份认证阶段,需要确定发送的消息的来源来源。主要采用的加密方式包括RSA、DSA、ECDSA(ECC加密,DSA签名)等。

        消息加密阶段:

        消息加密指对发送的信息流进行加密。主要采用的加密方式包括DES、RC4、aes等。

        消息身份认证阶段/防篡改阶段:

        主要是保证消息在传输过程中确保没有被篡改过。主要的加密方式包括MD5、SHA1、SHA2、SHA3等。

         ECC :Elliptic Curves Cryptography,椭圆曲线密码编码学。是一种根据椭圆上点倍积生成 公钥、私钥的算法。用于生成公私秘钥。

         ECDSA :用于数字签名,是一种数字签名算法。一种有效的数字签名使接收者有理由相信消息是由已知的发送者创建的,从而发送者不能否认已经发送了消息(身份验证和不可否认),并且消息在运输过程中没有改变。ECDSA签名算法是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。 主要用于身份认证阶段 。

         ECDH :也是基于ECC算法的霍夫曼树秘钥,通过ECDH,双方可以在不共享任何秘密的前提下协商出一个共享秘密,并且是这种共享秘钥是为当前的通信暂时性的随机生成的,通信一旦中断秘钥就消失。 主要用于握手磋商阶段。

         ECIES: 是一种集成加密方案,也可称为一种混合加密方案,它提供了对所选择的明文和选择的密码文本攻击的语义安全性。ECIES可以使用不同类型的函数:秘钥协商函数(KA),秘钥推导函数(KDF),对称加密方案(ENC),哈希函数(HASH), H-MAC函数(MAC)。

         ECC 是椭圆加密算法,主要讲述了按照公私钥怎么在椭圆上产生,并且不可逆。 ECDSA 则主要是采用ECC算法怎么来做签名, ECDH 则是采用ECC算法怎么生成对称秘钥。以上三者都是对ECC加密算法的应用。而现实场景中,我们往往会采用混合加密(对称加密,非对称加密结合使用,签名技术等一起使用)。 ECIES 就是底层利用ECC算法提供的一套集成(混合)加密方案。其中包括了非对称加密,对称加密和签名的功能。

        ECC 是 Elliptic Curve Cryptography的简称。那么什么是椭圆加密曲线呢?Wolfram MathWorld 给出了很标准的定义: 一条椭圆曲线就是一组被   定义的且满足  的点集。  

这个先订条件是为了保证曲线不包含奇点。

所以,随着曲线参数a和b的不断变化,曲线也呈现出了不同的形状。比如:

        所有的非对称加密的基本原理基本都是基于一个公式 K = k*G。其中K代表公钥,k代表私钥,G代表某一个选取的基点。非对称加密的算法 就是要保证 该公式  不可进行逆运算( 也就是说G/K是无法计算的 )。

        ECC是如何计算出公私钥呢?这里我按照我自己的理解来描述。

         我理解,ECC的核心思想就是:选择曲线上的一个基点G,之后随机在ECC曲线上取一个点k(作为私钥),然后根据k*G计算出我们的公钥K。并且保证公钥K也要在曲线上。

        那么k*G怎么计算呢?如何计算k*G才能保证最后的结果不可逆呢?这就是ECC算法要解决的。

        首先,我们先随便选择一条ECC曲线,a = -3, b = 7 得到如下曲线:

        在这个曲线上,我随机选取两个点,这两个点的乘法怎么算呢?我们可以简化下问题,乘法是都可以用加法表示的,比如2*2 = 2+2,3*5 = 5+5+5。 那么我们只要能在曲线上计算出加法,理论上就能算乘法。所以,只要能在这个曲线上进行加法计算,理论上就可以来计算乘法,理论上也就可以计算k*G这种表达式的值。

        曲线上两点的加法又怎么算呢?这里ECC为了保证不可逆性,在曲线上自定义了加法体系。

        现实中,1+1=2,2+2=4,但在ECC算法里,我们理解的这种加法体系是不可能。故需要自定义一套适用于该曲线的加法体系。

         ECC定义,在图形中随机找一条直线,与ECC曲线相交于三个点(也有可能是两个点),这三点分别是P、Q、R。

         那么P+Q+R = 0。其中0 不是坐标轴上的0点,而是ECC中的无穷远点。也就是说定义了无穷远点为0点。

        同样,我们就能得出 P+Q = -R。 由于R 与-R是关于X轴对称的,所以我们就能在曲线上找到其坐标。

        P+R+Q = 0, 故P+R = -Q , 如上图。

以上就描述了ECC曲线的世界里是如何进行加法运算的。

        从上图可看出,直线与曲线只有两个交点,也就是说 直线是曲线的切线。此时P,R 重合了。

        也就是P = R, 根据上述ECC的加法体系,P+R+Q = 0, 就可以得出 P+R+Q = 2P+Q = 2R+Q=0

        于是乎得到 2*P = -Q (是不是与我们非对称算法的公式 K = k*G 越来越近了)。

        于是我们得出一个结论,可以算乘法,不过只有在切点的时候才能算乘法,而且只能算2的乘法。

        假若 2 可以变成任意个数进行想乘,那么就能代表在ECC曲线里可以进行乘法运算,那么ECC算法就能满足非对称加密算法的要求了。

        那么我们是不是可以随机任何一个数的乘法都可以算呢? 答案是肯定的。 也就是点倍积 计算方式。

        选一个随机数 k, 那么k * P等于多少呢?

        我们知道在计算机的世界里,所有的都是二进制的,ECC既然能算2的乘法,那么我们可以将随机数k描 述成二进制然后计算。假若k = 151 = 10010111

        由于2*P = -Q 所以 这样就计算出了k*P。 这就是点倍积算法 。所以在ECC的曲线体系下是可以来计算乘法,那么以为这非对称加密的方式是可行的。

        至于为什么这样计算 是不可逆的。这需要大量的推演,我也不了解。但是我觉得可以这样理解:

        我们的手表上,一般都有时间刻度。现在如果把1990年01月01日0点0分0秒作为起始点,如果告诉你至起始点为止时间流逝了 整1年,那么我们是可以计算出现在的时间的,也就是能在手表上将时分秒指针应该指向00:00:00。但是反过来,我说现在手表上的时分秒指针指向了00:00:00,你能告诉我至起始点算过了有几年了么?

        ECDSA签名算法和其他DSA、RSA基本相似,都是采用私钥签名,公钥验证。只不过算法体系采用的是ECC的算法。交互的双方要采用同一套参数体系。签名原理如下:

        在曲线上选取一个无穷远点为基点 G = (x,y)。随机在曲线上取一点k 作为私钥, K = k*G 计算出公钥。

         签名过程:

        生成随机数R, 计算出RG.

        根据随机数R,消息M的HASH值H,以及私钥k, 计算出签名S = (H+kx)/R.

        将消息M,RG,S发送给接收方。

         签名验证过程:

        接收到消息M, RG,S

        根据消息计算出HASH值H

        根据发送方的公钥K,计算 HG/S + xK/S, 将计算的结果与 RG比较。如果相等则验证成功。

         公式推论:

        HG/S + xK/S = HG/S + x(kG)/S = (H+xk)/GS = RG

        在介绍原理前,说明一下ECC是满足结合律和交换律的,也就是说A+B+C = A+C+B = (A+C)+B。

        这里举一个WIKI上的例子说明如何生成共享秘钥,也可以参考  Alice And Bob  的例子。

        Alice 与Bob 要进行通信,双方前提都是基于 同一参数体系的ECC生成的 公钥和私钥。所以有ECC有共同的基点G。

         生成秘钥阶段:

        Alice 采用公钥算法 KA = ka * G ,生成了公钥KA和私钥ka, 并公开公钥KA。

        Bob 采用公钥算法 KB = kb * G ,生成了公钥KB和私钥 kb, 并公开公钥KB。

         计算ECDH阶段:

        Alice 利用计算公式 Q = ka * KB  计算出一个秘钥Q。

        Bob 利用计算公式 Q' = kb * KA 计算出一个秘钥Q'。

         共享秘钥验证:

        Q = ka  KB = ka * kb * G = ka * G * kb = KA * kb = kb * KA = Q'

        故 双方分别计算出的共享秘钥不需要进行公开就可采用Q进行加密。我们将Q称为共享秘钥。

        在以太坊中,采用的ECIEC的加密套件中的其他内容:

        1、其中HASH算法采用的是最安全的SHA3算法 Keccak 。

        2、签名算法采用的是 ECDSA

        3、认证方式采用的是  H-MAC

        4、ECC的参数体系采用了secp256k1,  其他参数体系 参考这里

        H-MAC 全程叫做 Hash-based Message Authentication Code. 其模型如下:

在 以太坊 的 UDP通信时(RPC通信加密方式不同),则采用了以上的实现方式,并扩展化了。

首先,以太坊的UDP通信的结构如下:

        其中,sig是 经过 私钥加密的签名信息。mac是可以理解为整个消息的摘要, ptype是消息的事件类型,data则是经过RLP编码后的传输数据。

        其UDP的整个的加密,认证,签名模型如下:

Android加密算法总结

1.概念:

Base64是一种用64个字符(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/)来表示二进制数据的方法,只是一种编码方式,所以不建议使用Base64来进行加密数据。

2.由来:

为什么会有Base64编码呢?因为计算机中数据是按ascii码存储的,而ascii码的128~255之间的值是不可见字符。在网络上交换数据时,比如图片二进制流的每个字节不可能全部都是可见字符,所以就传送不了。最好的方法就是在不改变传统协议的情况下,做一种扩展方案来支持二进制文件的传送,把不可打印的字符也能用可打印字符来表示,所以就先把数据先做一个Base64编码,统统变成可见字符,降低错误率。

3.示例:

加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦。

1.DES

DES全称为Data Encryption Standard,即数据加密标准,是一种使用 密钥加密 的块算法。

DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。

2.3DES

3DES(或称为Triple DES)是三重 数据加密算法 (TDEA,Triple Data Encryption Algorithm)块密码的通称。是DES向aes过渡的加密算法,它使用3条56位的密钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全。

3.aes

aes全称Advanced Encryption Standard,即高级加密标准,当今最流行的对称加密算法之一,是DES的替代者。支持三种长度的密钥:128位,192位,256位。

aes算法是把明文拆分成一个个独立的明文块,每一个明文块长128bit。这些明文块经过aes加密器的复杂处理,生成一个个独立的密文块,这些密文块拼接在一起,就是最终的aes加密结果。

但是这里涉及到一个问题:假如一段明文长度是192bit,如果按每128bit一个明文块来拆分的话,第二个明文块只有64bit,不足128bit。这时候怎么办呢?就需要对明文块进行填充(Padding):

aes的工作模式,体现在把明文块加密成密文块的处理过程中。

加密和解密用的密钥是不同的,这种加密方式是用数学上的难解问题构造的,通常加密解密的速度比较慢,适合偶尔发送数据的场合。优点是密钥传输方便。

1.SHA

安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法,且若输入的消息不同,它们对应到不同字符串的机率很高。

SHA分为SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512五种算法,后四者有时并称为SHA-2。SHA-1在许多安全协定中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的杂凑函数)的后继者。但SHA-1的安全性如今被密码学家严重质疑;虽然至今尚未出现对SHA-2有效的攻击,它的算法跟SHA-1基本上仍然相似;因此有些人开始发展其他替代的杂凑算法。

2.RSA

RSA算法1978年出现,是第一个既能用于数据加密也能用于数字签名的算法,易于理解和操作。

RSA基于一个数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。公钥是可提供给任何人使用,私钥则为自己所有,供解密之用。

3.MD5

MD5信息摘要算法 (英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值,用于确保信息传输完整一致。具有如下优点:

XOR:异或加密,既将某个字符或者数值 x 与一个数值 m 进行异或运算得到 y ,则再用 y 与 m 进行异或运算就可还原为 x。

使用场景:

(1)两个变量的互换(不借助第三个变量);

(2)数据的简单加密解密。

智能化时代的到来涉及了各种核心算法,保护算法就能保障开发者权益,杜绝市面上各种山寨品,加密芯片恰好能起到很好的保护作用,如何选择加密芯片呢?KEROS加密芯片专注于加密领域十余年,行业首选。
1.安全性:采用国际通用aes256算法加密并同时通过KAS传送,除基本认证之外,利用2K安全EEPROM,用户可以自己管理密钥和数据,实现双重保护。
2.唯一性:以定制的方式为每一位用户单独定制“专属型号CID”,多用户之间算法不兼容,并且采用固化的方法直接将算法固化到晶圆上而无需烧入。
3.序列号:每颗芯片制造生产时具有5字节全球唯一SN序列号,每颗芯片SN都不会重复。
4.防抄特性:每颗芯片都有自己独特的密钥系统,破解单颗芯片只对这颗芯片对应的产品有效,对整个同类型的产品是无效的,依旧无法通过验证。而且KEROS采用ASIC方法设计,芯片内为纯逻辑电路,封装内有40多层逻辑电路整合了10万多个逻辑门,爆力刨片破解难度可想而知。
5.安全存储:用户可以将保密数据加密之后安全的存放到EEPROM中。加密算法总结怎么写的介绍就聊到这里吧,感谢你花时间阅读本站内容。

本文标签:加密算法总结怎么写

产品列表
产品封装
友情链接