精华内容
下载资源
问答
  • 对称加密算法和非对称加密算法

    千次阅读 2019-03-17 15:59:04
    有一种加密算法叫做对称加密,对称加密是以前比较常见的一种加密方式。所谓对称加密的意思是说假如有一个人A,他想把一个信号m传递给B,他不能直接将这个信息传递给B,否则会有人可能会窃听。于是通过一些算法,...

            比如说我们去银行存钱取钱,用到密码,密码是基于数学的,我们来讨论下关于密码学的问题:
            有一种加密算法叫做对称加密,对称加密是以前比较常见的一种加密方式。所谓对称加密的意思是说假如有一个人A,他想把一个信号m传递给B,他不能直接将这个信息传递给B,否则会有人可能会窃听。于是通过一些算法,比如通过加一个数字e变成了一个新的数字C,他把C传递给B,B接收到C之后再减去那个e就会得到原来的数字m。


           比如想要传递2  e=1 2+1=3    B接收到3之后3-1=2    ,于是我们就知道m了
    在这个过程中,我们将

    • m称为明文,就是我们希望表达的含义
    • C我们称之为密文,就是我们可以公开传递的一个信息
    • e就是密钥,密钥是要保密的,我们不可以告诉其他人

            算法其实可以比较复杂,不一定是加一个数字,他可能是m乘以e得到一个数字得到C,我们得到C之后可以除以e。也可以是m的e次方,得到一个数字,我们再开e次根号就可以了。算法可以非常复杂,但是再复杂也存在被窃听的可能,因为可以穷举,比如他一次又一次的尝试以前的算法,他还可以通过数字的频率,比如在英文的26个字母中,在一段话中出现的频率不一样,他只要截取到足够多的密文,一次又一次的尝试,他就可以把你的密钥给试出来,所以密钥是不保险的。

            于是人们就想能不能我们发一段文字之后就换一个密钥。再发一段文字,我再换一个密钥,这样别人就不知道我说的是什么了。但是问题是密钥的分发又成为了一个问题,你怎么才可以把这个e安全的传给B,你派一个人去传这样 的效率很低,你打电话给B,B有可能会被监听。所以密钥分发是一件非常麻烦的事情,那么现在的量子保密通信就可以实现密钥分发的保密性。

            那么除了这种对称加密以外,现在比较流行的一种算法叫做非对称加密。A想把一个信息m传递给B。首先B先干这么一件事情。B生成两个有相互关系的数字,这两个有相关性的数字,一个叫做e,一个叫做d。那么这个e就叫做公钥,公共的钥匙,而这个d就叫做私钥,私人的钥匙。然后B先把这个e公钥传递给A,可以通过公开的方式传递,这样的话我不怕你窃听。我告诉你公钥是什么,然后这个A通过这种公钥e的某一个算法得到一个密文C。然后再通过公开的方式将这个密文传递给B,那么这个不对称性就体现在这个地方了。通过密文求解原文的过程,不是减去e,而是要减去d,通过减去一个d我们就可以得到明文m。也就是说,这个d和e是有一定的关系的,我经过加密的时候,我是用的e对数字进行加密,我解密的时候呢,需要用到d数字进行解密
            我传递公钥的过程的我不怕你窃听。因为就算是你窃听了,你也不会知道这个密钥是什么。所以你窃听了我的公钥和密文之后,你依然无法得到明文,这个就是非对称加密的方式。

            那么非对称加密是基于什么样的一个数学原理呢?我们接下来的时间会来介绍一种典型的非对称加密方式,叫做RSA加密算法。敬请期待!

            撒花✿✿ヽ(°▽°)ノ✿!!!

     

    展开全文
  • TEA加密算法

    2017-07-16 21:02:46
    TEA加密算法的加强版XTEA的实现,包含EBC-TEA和CBC-TEA两个模式的不同加密方式。可用于测试分组加密的ECB和CBC的优劣性。
  • [导读] 为了加强无线网络的安全性,增加被破解的难度,局域网/城域网标准委员会提出了新的无线网络加密算法CCMP。详细说明该算法加密解密的实现过程,并给出相应代码。 无线网络产品因其灵活、便捷、无线等...

     

    原文地址:http://www.jiamisoft.com/blog/2586-ccmpjiamisuanfa.html

    [导读] 为了加强无线网络的安全性,增加被破解的难度,局域网/城域网标准委员会提出了新的无线网络加密算法CCMP。详细说明该算法加密解密的实现过程,并给出相应代码。

    无线网络产品因其灵活、便捷、无线等特点,正在被越来越多的人所使用。但是在我们享受无线网络带给我们诸多好处的同时,安全问题也给我们带来了巨大困惑。为局域网/城域网标准委员会先后给无线网络提出了3个标准的加密算法,即WEP、TKIP、CCMP加密算法,用来保护我们的无线网络。由于CCMP加密算法采用了比TKIP更高级的加密标准CCMP加密算法,CCMP被认为是目前无线网络比较安全和可靠的加密算法。在这里我将对这个加密算法给大家简单介绍一下。

     

    在我们分析CCMP的加密解密过程之前,我们先说明一下CCMP核心加密算法AES,因为MIC和文件加密解密都需要使用该算法。

     

    一、AES加密算法 

     

    AES加密算法其目的是开发一种新的能保证政府信息安全的编码算法。密钥长度可为128、192、256bit。它的输出更具有随机性,对该密文破解需要几乎整个密码本及相关的不知道密钥的密文,加解密的密码本分开。安全性很高。

     

    AES加密算法的具体算法说明可以从NIST的FIPS _PUB 197 _nAd—vanced _encry ption standard文档得到的。

     

    ∥加密

    Cipher(byte in(4*Nbj, byte out[4*Nb], word w[Nb*(Nr+lyyfm)]为原文out[]为密文

    Begin// _ _ _ _ _ w[]是由密钥扩展的密钥串

    byte state[4,Nb]

    state=m

    AddRoundKey(srate, w[0, Nb-1D//与第一行密钥串异或

    for round=lstepl to Nr?

    SubBytes(state)//state的S盒置换

    ShiftRows(state)//接行移位

    MixColumns(state)//按列变换

    AddRoundKey(state, w[round*Nb, (round+ lyNb -1])//与第round行密钥串异或

    end for

    SubBytes(state)

     

    ShiIIRows(state)

    AddRoundKey(slaLe, w[NPNb, (Nr+l)*Nb-ll)

    out= sLate

    end

    ∥解密

    InvCipher(bytc m[4*Nb], byte out[4*Nb], wordw[Nb*

    (Nr+I)D

    begin

    byte swe[4,Nb]

    state= in

    AddRoundKey(state, w[Nr*Nb, (Nr+l)*Nb-lD

    for round – Nr-1 step -l downt01

    InvStuftRows(staLe)//按行移位的逆变换

    InvSubBytes(state)//S盒置换的逆变换

    AddRourtd Key(state,w[round*Nb, (round+I)*Nb-1])

    InvMixColumns(sWe),,按列变换的逆变换

    end for

    InvShitIRows(staLe)

    InvSubBytes(state)

    AddRoundKey(state, w[0, Nb-1])

    out= state

    end

     

    目前广泛使用的是rijndnal编写的AES加密算法,这个可以很轻松的从网上得到。

     

    二、CCMP加密算法

     

    了解了AES的加密和解密过程,接下来我们就开始说明CCMP的加密解密以及MIC的生成过程。CCMP的加密:首先我们从mpdu的MAC _Header提取结构AAD以及Nonce。如图1所示。AAD和Nonce提取办法如下:

     

    然后我们计算出MIC,把它加入到数据域后面。生成8字节的CCMP Header与MAC Header组成加密帧的验证部分,这部分不需要加密。然后对数据域和MIC进行CTR( counter)模式的AES加密,量后加上FCS校验就生成了加密帧。

     

    1、 MIC计算

     

    CCMP的MIC计算是MPDUlevel的,与TKIP的MSDUlevel区射,提供更好的完叠性校验。首先把(Nonce,AAD,P(数据域原文))从左刭右组成一个序列,然后再补上一些D字节,使之成为16字节倍数的序列。然后把它分隔成n个16字节块,用BO,B1,…,Bn表示。接着使用CBC-MAC计算出MIC使用的T(MAC值),按照下列的算法计算:

     

    x:= AES(k1 b0)

    —k.|- AES(x,x? Bi) fori=l.,.,,n

    T:= first-M-bytes( X~.)

    其中AES(K,B)为密钥K的AES加密。T取X序列的低M个字节。M为MIC的长度。

     

    特别的.B0,B1一……Bn序列中.B0是由Nonee组成的MIC IV.Bl.B2是由MAC Header也即AAD组成的MIC HEADERI,2;B3从开始就是数据域原文分翻成的16字节块。

     

    Adata位当AAD长度大千0时置l,否列为0。后面3bit为NUC长度域,值为(M-2),2。最后为信息的长度域,值为1-1.2为信息长度的范围。一般M=8.L=2,列Flag为Ox59.量终的MIC值还需要将个值与后续CTR加密的so值【前M个字节)异或。表示如下:

     

    MIC=T? _flrsL-M-bytes(SO).

     

    2、CTR加密

     

    取得7 MiC之后,就可以对数据域和MIC进行CTR加密.首先把数据城分钠成16个字节块,量后囊余的字节不用朴零.用Ai表示.MIC部分是单独CTR计算的。

     

    Si= AES(K,CTR_PRELOAD(i)); //i从O刭m Ei=Si? Ai;UEi为加密好的16字节块

     

    特别的对于数据域量后一个16字节块,可能不满16个字节,只有x(O<x<16)个字节,郝异或时,只要取Si中的前x个字节。

     

    对予MIC部分

    E(MIC)= S0:? MLC

    CTR_PRELOAD(i)的结构如下:

    Counter从i=0开始不断自增1

    1个字节的Flag域:

     

    只有最后3个bir的信息长度城。当L-2时,Flag值

     

    为Ox01.

     

    3、CCMP的解密

     

    从加密的MPDU中得到CCMP Header与MACHeader.然后计算出AAD.Nonce.算出每个CTR PRELOAD.从而通过ctrR解密得到数据域原文以及rvnc.使用前一节MIC的计算方法算出当前的MIC.与解密后的rvnc比较,进行校验.在这里我们给出CTR解密的过程。

     

    CTRN解密

     

    对加密的数据城进行16字节分割,用EI表示。加密的rvnc.FCS前的8个字节,用E(MIC)表示,单独取出进行CTR解密,数据域的原文16宇节块,用Ai表示。

    则解密过程如下:

     

    si= AES(K,CTI乙PRELOAD(i》;仇从0到m

    Ai=Si7 Ei=Si? Si? Ai;

     

    特别的对于加密的数据域最后一个16字节块.可能不满16个字节,只有y(O<y<16)个字节,鄢异或时,只要取Si中的前y个字节。

     

    对于MJC部分

    MIC=S0?E(MIC)

     

    通过上面的表述,你基本可以知道CCMP如何操作的。

     

    CCMP的计算还是比较复杂,一方面可能增加了成本,一方面却大大加强了无线网络的安全.目前,它一般会和身份验证服务RADIUS以及密钢管理一起提供一个安全、可靠、可以信赖的无线环境。

     

    小知识之CCMP :

     

    CCMP(Counter CBC-MAC Protocol) 计数器模式密码块链消息完整码协议。

    展开全文
  • 国产加密算法

    2021-03-31 17:31:58
    目录加密算法国产加密算法简单使用分组加密回顾运行模式ECB: 一半意义理解CBC: 需要初始向量IV (IV需要进行保护)CFB: 需要初始向量IVOFB模式CTR - CounTeR, 计数器模式(重点,推荐使用)数据填充原理参考源码分析 ...

    加密算法

    主流分类方式

    1. 流密码&分组密码
    2. 对称密码&非对称密码

    国产加密算法

    SM4分组加密算法(对称密码)

    简单使用

    参考 国产SM4密码算法详解

    文章中源码链接已失效

    在SM4的源代码中存在如下几个函数:

    void sm4_setkey_enc(sm4_context *ctx,unsigned char key[16])
    void sm4_setkey_dec(sm4_context *ctx,unsigned char key[16])
    void sm4_crypt_ecb( sm4_context *ctx,int mode,int length, unsigned char *input,unsigned char *output)
    void sm4_crypt_cbc( sm4_context *ctx,int mode,int length,unsigned char iv[16],unsigned char *input,unsigned char output )
    static void sm4_setkey( unsigned long SK[32], unsigned char key[16] )
    

    还有一个非常重要的结构体:sm4_context

    typedef struct
    {
    int mode; 				/!< encrypt/decrypt /
    unsigned long sk[32]; 	/!< SM4 subkeys */
    }sm4_context;
    

    先说结构体:
    sm4_context结构体中的Mode控制是加密还是解密,sk则表示子密钥,也称作轮密钥。

    第一个函数: void sm4_setkey_enc(sm4_context *ctx,unsigned char key[16])
    这个函数是用来设置加密密钥的,一个参数分别为sm4_context *ctx和一个key。
    其内部会调用static void sm4_setkey( unsigned long SK[32], unsigned char key[16] )函数
    这个函数是用来设置密钥的,这个函数内部会对当前传入的主密钥进行32轮的迭代,每次迭代的轮密钥都被存放到ctx结构中的sk数组中。
    void sm4_setkey_dec(sm4_context *ctx,unsigned char key[16])函数就是解密函数,过程为上述过程的逆序过程。

    第二个函数:void sm4_crypt_ecb( sm4_context *ctx,int mode,int length, unsigned char *input,unsigned char *output)
    这个函数的作用是使用ecb模式(ECB(Electronic Codebook,电码本)模式是分组密码的一种最基本的工作模式。同样,sm4_crypt_cbc函数则是使用的CBC模式,也就是分组链接模式)来对内容进行加密,内部也是一个循环,根据length的长度来进行循环,每次循环都调用sm4_one_round进行加密或者解密,到底是加密还是解密,主要是根据第二个参数Mode来进行决定。
    以上就是整个SM4算法的函数简介,运用这些函数接口,我们不需要知道内部的具体实现,就可以使用sm4加密算法来对我们的数据进行加解密,十分的方便。

    分组加密回顾

    运行模式

    模式描述优点缺点用途
    电码本模式(ECB)每个明文组(64bit)以同一密钥加密误差不传导可能出现短块(自行填充);暴露明文数据模式传送短数据
    密码分组链接模式(CBC)加密算法的输入是当前明文组与前一密文组的异或错误传播无界:用于检测数据的完整性和真实性错误传播无界:一处错误—>一直错误传送数据分组;认证
    密码反馈模式(CFB)每次只处理输入的j比特,将上一次的密文用作加密算法的输入以产生伪随机输入,该输入再与当前明文异或以产生密文无需填充; 比特错误传播可用最后一位认证所有明文;自同步比特错误传播传送数据流;认证
    输出反馈模式(OFB)与CFB类似,不同之处是本次加密算法的输入为前一次加密算法的输出比特错误不会传播有扰信道上(如卫星通讯)传送数据流

    在这里插入图片描述

    ECB: 一般意义理解

    CBC: 需要初始向量IV (IV需要进行保护)

    加密:
    C1=Ek[IV⊕P1]
    Ci=Ek[Ci-1⊕Pi]

    解密:
    P1=IV⊕Dk[C1]
    Pi=Ci-1⊕Dk[Ci]

    保护IV:如果敌方能欺骗接收方使用不同的IV,敌方就能在明文的第一分组中插入自己选择的比特值

    P1(i)=IV(i)⊕Dk[C1] (i)
    P1(i)=IV(i)'⊕Dk[C1] (i)

    CFB: 需要初始向量IV

    可以将分组密码转化为流密码 故而无需填充

    在这里插入图片描述

    OFB模式

    初始向量,无填充 ,流密码
    在这里插入图片描述

    CTR - CounTeR, 计数器模式(重点,推荐使用)

    特点: 密文没有规律, 明文分组是和一个数据流进行的按位异或操作, 最终生成了密文

    • 不需要初始化向量
    • 不需要填充

    这里我们有必要给出CTR模式的加密流程,因为CTR模式的解密和加密是一模一样的过程,在程序实现中也是可逆的.
    在这里插入图片描述

    CTR加密即解密,解密即加密,且各分组之间是独立的,可以并发完成,效率高。

    数据填充
    • NoPadding
      明文数据必须为8字节的整数倍,自动零比特填充

    • PKCS7Padding(PKCS5Padding)
      为.NET和JAVA的默认填充方式,对加密数据字节长度对8取余为r,如r大于0,则补8-r个字节,字节为8-r的值;如果r等于0,则补8个字节8。比如:
      加密字符串为为AA,则补位为AA666666;加密字符串为BBBBB,则补位为BBBBB333;加密字符串为CCCCCCCC,则补位为CCCCCCCC88888888。

    JDK中AES算法中不支持PKCS7Padding,只支持PKCS5Padding 但是PKCS7Padding 和 PKCS5Padding 没有什么区别要实现在java端用PKCS7Padding填充,需要用到bouncycastle组件来实现

    原理参考

    原理参考:SM4 算法原理

    源码分析

    SM4国密算法实现分析
    SM4加密算法Java实现

    展开全文
  • 国密加密算法与国际加密算法

    千次阅读 2019-05-17 10:59:09
    国密算法: ...采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。 ...

     

     

    国密算法:


    1.  SM1

    SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 比特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯片中。

    采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。

    2.  SM2

    SM2是国家密码管理局于2010年12月17日发布的自主设计椭圆曲线公钥密码算法。包括了SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。

    非对称算法(公钥密码算法),加密解密一对密钥,即一个密钥加密,另一个密钥解密。密钥长度256位。目前算法已公开,使用著名的ECC,即椭圆曲线算法。靠的就是计算椭圆曲线的复杂度来保障安全性。SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。

    SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。

    3.  SM3

    又叫文摘算法,也有叫杂凑算法的。

    SM3是我国自主设计的密码算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短,例如MD5输出128比特杂凑值,输出长度太短,影响其安全性SHA-1算法的输出长度为160比特,SM3算法的输出长度为256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。

    SM3功能与MD5,SHA-1相同。产生256位的编码,该算法是不可逆的算法,具体算法也是保密。

    4.  SM4

    SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。要保证一个对称密码算法的安全性的基本条件是其具备足够的密钥长度,SM4算法与AES算法具有相同的密钥长度分组长度128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。因此在安全性上高于3DES算法。

    5.  SM7

    SM7算法,是一种分组密码算法,分组长度为128比特,密钥长度为128比特。SM7适用于非接触式IC卡,应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通等)。

     

    国际标准算法: 


    现代密码学分为对称加密与非对称加密(公钥加密),代表算法分别有DES(现在发展为3DES)、AES与RSA等。非对称加密算法的资源消耗大于对称加密。一般是进行混合加密处理,例如使用RSA进行密钥分发、协商,使用AES进行业务数据的加解密。

    1.  DES3DES

    DES主要采用替换和移位的方法,用56位密钥对64位二进制数据块进行加密,每次加密可对64位的输入数据进行16轮编码,经一系列替换和移位后,输入的64位转换成安全不同的64的输出数据.

    3DES:是在DES的基础上采用三重DES,即用两个56位的密钥K1,K2,发送方用K1加密,K2解密,再使用K1加密.接收方使用K1解密,K2加密,再使用K1解密,其效果相当于密钥长度加倍.

    2.  AESAES192AES256

    高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,AES已然成为对称密钥加密中最流行的算法之一。

    AES(128)和AES256主要区别和安全程度是多少?对于机器的消耗是怎样的?两者性能如何?

    AES相比同类对称加密算法速度算是非常快。安全性在可预见的未来是基本等同的,因为即使是128位也足够复杂无法被暴力破解。况且现在112位密码还在商业应用,而128位是112位的几万倍,所以在实务中用128位比较划算(节约资源)。

    AES128和AES256主要区别是密钥长度不同(分别是128bits,256bits)、加密处理轮数不同(分别是10轮,14轮),后者强度高于前者。

    当然,AES256比128大概需要多花40%的时间,用于多出的4轮round key生成以及对应的SPN操作。安全程度自然是256比128安全,因为目前除了暴力破解,并没有十分有效的代数攻击方法。

    关于用AES128还是AES256算法,AES128已经足够用,当然AES256可以作为一个营销手段使用

    3.  RSA

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

    RSA是公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,也就是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。

    在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。

    它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。

    RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。

    SET(Secure Electronic Transaction)协议中要求CA采用2048bits长的密钥,其他实体使用1024比特的密钥。RSA密钥长度随着保密级别提高,增加很快。

    各类算法对应的加密级别

    保密级别

    对称密钥长度(bit)

    RSA密钥长度(bit)

    ECC密钥长度(bit)

    保密年限

    80

    80

    1024

    160

    2010

    112

    112

    2048

    224

    2030

    128

    128

    3072

    256

    2040

    192

    192

    7680

    384

    2080

    256

    256

    15360

    512

    2120

    4.  SHA1

    哈希算法也称为“哈希函数”,是安全散列算法SHA(Secure Hash Algorithm,SHA)的简称。

    SHA1是哈希算法的一种,典型的哈希算法包括 MD2、MD4、MD5 和 SHA-1。除SHA-1外的SHA-256、SHA-384 和SHA-512通常归为一组,即为SHA-2

    散列算法

    散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。

    SHA-1原理

    SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。

    单向散列函数的安全性在于其产生散列值的操作过程具有较强的单向性。如果在输入序列中嵌入密码,那么任何人在不知道密码的情况下都不能产生正确的散列值,从而保证了其安全性。SHA将输入流按照每块512位(64个字节)进行分块,并产生20个字节的被称为信息认证代码或信息摘要的输出。 

    单向散列函数一般用于产生消息摘要,密钥加密等,常见的有:

        Ø MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法。

        Ø SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值;

    通过散列算法可实现数字签名,数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改。

    SHA-1与MD5的比较

    因为二者均由MD4导出,SHA-1和MD5彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同:

    Ø   对强行攻击的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2^128数量级的操作,而对SHA-1则是2^160数量级的操作。这样,SHA-1对强行攻击有更大的强度。

    Ø   对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。

    Ø   速度:在相同的硬件上,SHA-1的运行速度比MD5慢。

    2005年,密码学家就证明SHA-1的破解速度比预期提高了2000倍,虽然破解仍然是极其困难和昂贵的,但随着计算机变得越来越快和越来越廉价,SHA-1算法的安全性也逐年降低,已被密码学家严重质疑,希望由安全强度更高的SHA-2替代它。

    展开全文
  • 下面算法中,不属于公开密钥加密算法的是()。D A.ECC B.DSA C.RSA D.DES 常用的公钥加密算法有RSA、DSA、ElGamal和ECC。 常用的对称加密算法有DES、3DES、IDEA、AES、Blowfish、Twofish和RSA公司的RC系列算法...
  • RSA算法原理——(1)目前常见加密算法简介

    万次阅读 多人点赞 2018-06-18 21:50:53
    今天为大家带来RSA算法的讲解文章,主要包括RSA算法的加解密过程和公式论证。文章可能会稍微有点长,但是内容绝对是目前全网最详细的...目前常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。...
  • RC4 加密算法

    2021-03-01 14:15:59
    RC4 于 1987 年提出,和 DES 算法一样,是一种对称加密算法。但不同于 DES 的是,RC4 不是对明文进行分组处理,而是以字节流的方式依次加密明文中的每一个字节,解密的时候也是依次对密文中的每一个字节进行解密。 ...
  • 椭圆曲线加密算法

    万次阅读 2019-05-16 14:33:16
    ECC被公认为在给定密钥长度下最安全的加密算法。比特币中的公私钥生成以及签名算法ECDSA都是基于ECC的。下面简单介绍ECC以及ECDSA的原理。 从公钥加密说起   公钥加密,也称非对称加密。可以说它现在是现代网络....
  • 比特币的加密算法

    万次阅读 2018-03-15 17:52:35
    比特币加密算法一共有两类:非对称加密算法(椭圆曲线加密算法)和哈希算法(SHA256,RIMPED160算法)。 比特币私钥(private key),公钥(public key),公钥哈希值(pubkeyhash),比特币地址(address) 公钥和私钥...
  • 加密算法

    2007-10-10 08:47:00
    C#可逆加密-Rijndael算法CS文件:Rijndael算法//App_Codeusing System;using System.IO;using System.Security.Cryptography;using System.Text; namespace DataCrypto{ /**//// /// DataCr
  • RSA加密算法RSA加密算法非常有名,在计算机领域的应用非常广泛,几乎是一般用户在信息加密时的首选。它是一种非对称加密演算法,名字来源于它的三个发明人——罗纳德·李维斯特(RonRive...
  • 几种常见加密算法

    万次阅读 2019-06-27 09:36:02
    一、加密算法分类 双向加密算法 单向加密算法(散列算法) 对称加密算法 非对称加密算法 MD5,SHA1,HMAC AES、DES、3DES RSA,DSA,ECC 双方采用共同的密钥和加密算法 A用B的公钥将消息加密,...
  • 加密目前已经成为计算机安全研究的主要方向,一个密码系统的安全性主要在于密钥的保密性,而不是算法的保密性。 加密系统至少要包括如下四个部分 1 未加密的报文,也叫明文:用M(消息)或P(明文)表示,可以是...
  • SM2算法第一篇:ECC加密算法

    万次阅读 多人点赞 2016-04-17 20:55:35
    ECC椭圆曲线加密算法
  • DES加密算法

    千次阅读 2014-12-17 16:35:43
    DES加密算法流程: 对于任意长度的明文,DES首先对其进行分组,使得每一组的长度为64位,然后分别对每个64位的明文分组进行加密。  对于每个64位长度的明文分组的加密过程如下:  (1)初始置换:输入分组按照...
  •   加密算法分为对称加密算法和非对称加密算法,其中非对称加密算法作为计算机通信安全的基石,在保证数据安全方面起着重要的作用。而相对于对称加密算法的易理解性,非对称加密算法存在一定的难度。下面通过对RSA...
  • 与典型非对称加密算法RSA算法相比,ElGamal算法则被称为常用非对称加密算法。 ElGamal既可用于加密,又可用于数字签名,是除RSA算法外最具代表性的公钥加密算法之一。 ElGamal算法就有较好的安全性,被广发应用。...
  • 散列算法与加密算法

    千次阅读 2017-04-20 09:15:50
    那么,首先要知道,什么是散列算法呢?产生一些数据片段(例如消息或会话项)的散列值的算法。例如,md5就是一种散列算法。软件开发中的散列函数或散列算法,又称哈希函数,英语:...加 密算法通常分为对称性加密算法
  • 几种常用加密算法简析与比较

    千次阅读 2019-09-24 13:56:38
    常用的加密算法总体可以分为两类:单项加密和双向加密,双向加密又分为对称加密和非对称加密,因此主要分析下面三种加密算法: 对称加密算法、非对称加密算法和单项加密算法(Hash算法)。 1、对称加密算法(AES、...
  • 常用加密算法介绍

    千次阅读 2011-05-16 13:35:00
    常用加密算法介绍  5.3.1  古典密码算法 古典密码大都比较简单,这些加密方法是根据字母的统计特性和语言学知识加密的,在可用计算机进行密码分析的今天,很容易被破译。虽然现在很少采用,但研究...
  • 不可逆加密算法解释

    千次阅读 2017-02-15 08:23:51
    不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被...
  • 加密算法总的可以分为两种,对称加密与非对称加密算法。 RSA是1977年三位数学家Rivest,Shamir,Adleman设计的一种非对称的加密算法,该算法破解的关键在于寻找大数的两个质数因子。大数长度越大,破解难度也就越大,...
  • 在上一篇文章【算法大杂烩】常见算法的归类和总结——对称加密算法 中我们简要介绍了常见的对称加密算法的相关知识。这次我们趁热打铁,介绍【非对称加密算法】, 通过本文的阅读,你可以了解到以下知识: 什么...
  • DES 加密算法原理

    万次阅读 2007-09-04 15:36:00
    DES加密算法是由 IBM 研究在1977年提出的。使用64位(bit)的数据进行加密和解密的,所用的密钥也是64位。并被美国国家标准局宣布为数据加密标准DES,主要用于非国家保密机关。
  • 常见加密算法有哪些?是否对称?

    千次阅读 2020-01-06 09:28:04
    常用的对称加密算法:DES、AES、3DES、RC2、RC4 常用的非对称加密算法:RSA、DSA、ECC 单向散列函数的加密算法:MD5、SHA 【Java面试题与答案】整理推荐 基础与语法 集合 网络编程 并发编程 Web 安全 ...
  • 1、非对称加密算法 RSA 和 ECC 对比 基于大整数因子分解问题(IFP)的 RSA 算法和基于椭圆曲线上离散对数计算问题(ECDLP)的 ECC 算法。 RSA 算法的特点之一是数学原理简单、在工程应用中比较易于实现,但它的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,072
精华内容 6,828
关键字:

下列不是加密算法的是