加密算法 订阅
数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码为“密文”,使其只能在输入相应的密钥之后才能显示出原容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。通过修改文件的md5值,可以绕过某些网盘的"违规文件扫描机制",这是因为网盘服务器内存储着已知违规文件的md5值,当上传文件时会自动与服务器md5数据库匹配以判断是否违规。 [1] 展开全文
数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码为“密文”,使其只能在输入相应的密钥之后才能显示出原容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。通过修改文件的md5值,可以绕过某些网盘的"违规文件扫描机制",这是因为网盘服务器内存储着已知违规文件的md5值,当上传文件时会自动与服务器md5数据库匹配以判断是否违规。 [1]
信息
别    称
密文
作    用
加密数据 [2]
解    锁
密钥
中文名
加密算法
外文名
Encryption algorithm
加密算法相关简介
据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家标准局公布实施了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度需求的不断提高,近期又出现了AES、ECC等。使用密码学可以达到以下目的:保密性:防止用户的标识或数据被读取。数据完整性:防止数据被更改。身份验证:确保数据发自特定的一方。
收起全文
精华内容
下载资源
问答
  • 加密算法
    千次阅读
    2021-10-24 12:40:43

    常见加密算法

    1、对称加密算法(AES、DES、3DES)

    对称加密算法是指加密和解密采用相同的密钥,是可逆的(即可解密)。

    AES加密算法是密码学中的高级加密标准,采用的是对称分组密码体制,密钥长度的最少支持为128。AES加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,已经被多方分析且广为全世界使用。

    AES数学原理详解:https://www.cnblogs.com/block2016/p/5596676.html

    **优点:**加密速度快

    **缺点:**密钥的传递和保存是一个问题,参与加密和解密的双方使用的密钥是一样的,这样密钥就很容易泄露。

    2、非对称加密算法(RSA、DSA、ECC)

    非对称加密算法是指加密和解密采用不同的密钥(公钥和私钥),因此非对称加密也叫公钥加密,是可逆的(即可解密)。公钥密码体制根据其所依据的难题一般分为三类:大素数分解问题类、离散对数问题类、椭圆曲线类。

    RSA加密算法是基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解极其困难,因此可以将乘积公开作为加密密钥。虽然RSA的安全性一直未能得到理论上的证明,但它经历了各种攻击至今未被完全攻破。

    **优点:**加密和解密的密钥不一致,公钥是可以公开的,只需保证私钥不被泄露即可,这样就密钥的传递变的简单很多,从而降低了被破解的几率。

    **缺点:**加密速度慢

    RSA加密算法既可以用来做数据加密,也可以用来数字签名。

    –数据加密过程:发送者用公钥加密,接收者用私钥解密(只有拥有私钥的接收者才能解读加密的内容)

    –数字签名过程:甲方用私钥加密,乙方用公钥解密(乙方解密成功说明就是甲方加的密,甲方就不可以抵赖)

    详细数学原理见 【来龙去脉系列】RSA算法原理

    ECC加密算法是基于椭圆曲线上离散对数计算问题(ECDLP)的ECC算法。ECC算法的数学理论非常深奥和复杂,在工程应用中比较难于实现,但它的单位安全强度相对较高。

    用国际上公认的对于ECC算法最有效的攻击方法–Pollard rho方法去破译和攻击ECC算法,它的破译或求解难度基本上是指数级的。正是由于RSA算法ECC算法这一明显不同,使得ECC算法的单位安全强度高于RSA算法,也就是说,要达到同样的安全强度,ECC算法所需的密钥长度远比RSA算法低。有研究表示160位的椭圆密钥与1024位的RSA密钥安全性相同。在私钥的加密解密速度上,ECC算法比RSA、DSA速度更快。存储空间占用更小。

    扩展阅读:

    ECDH and ECDSA

    How to encrypt data using Elliptic Curve Algorithm in C#

    ECC Examples for C#

    3、线性散列算法算法(MD5、SHA1、HMAC)

    MD5全称是Message-Digest Algorithm 5(信息摘要算法5),单向的算法不可逆(被MD5加密的数据不能被解密)。MD5加密后的数据长度要比加密数据小的多,且长度固定,且加密后的串是唯一的。

    适用场景:常用在不可还原的密码存储、信息完整性校验等。

    信息完整性校验:典型的应用是对一段信息产生信息摘要,以防止被篡改。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。

    SHA-1 与 MD5 的比较

    SHA-1摘要比MD5摘要长32 位,所以SHA-1对强行攻击有更大的强度,比MD5更安全。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2128数量级的操作,而对SHA-1则是2160数量级的操作。

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

    4、混合加密

    由于以上加密算法都有各自的缺点(RSA加密速度慢、AES密钥存储问题、MD5加密不可逆),因此实际应用时常将几种加密算法混合使用。

    例如:RSA+AES:

    采用RSA加密AES的密钥,采用AES对数据进行加密,这样集成了两种加密算法的优点,既保证了数据加密的速度,又实现了安全方便的密钥管理。

    那么,采用多少位的密钥合适呢?一般来讲密钥长度越长,安全性越高,但是加密速度越慢。所以密钥长度也要合理的选择,一般RSA建议采用1024位的数字,AES建议采用128位即可。

    5、Base64

    严格意义讲,Base64并不能算是一种加密算法,而是一种编码格式,是网络上最常见的用于传输8bid字节代码的编码方式之一。

    Base64编码可用于在HTTP环境下传递较长的标识信息,Base编码不仅不仅比较简单,同时也据有不可读性(编码的数据不会被肉眼直接看到)。

    更多相关内容
  • DES,DES加密算法,DES算法源码。用C写的DES加密算法。 DES,DES加密算法,DES算法源码。 DES加密算法(c语言实现) (本程序可以直接使用)
  • 加密算法总结

    千次阅读 2022-02-27 20:12:16
    加密算法,密码学

    常见的加密算法可以分成五类:

    1. 对称加密算法
    2. 非对称加密算法(也称公钥算法)
    3. Hash 算法(也称摘要算法)
    4. 数字签名(Hash&RSA)
    5. 数字证书(Hash&RSA&CA)。

    密码学汇总

    密码分类国产商用密码国际商用密码
    对称加密分组加密/块加密SM1/SCB2 SM4/SMS4 SM7DES、IDEA、AES、RC5、RC6
    序列加密/流加密ZUC(祖冲之算法) SSF446RC4
    非对称加密大数分解RSA、Rabin
    离散对数SM2 SM9DH、DSA、ECC
    散列(HASH)算法SM3MD5、SHA-1、SHA-2

    常见HASH算法

    已确认不安全:MD2、MD4、MD5、SHA-1
    目前为止安全的加密算法:sha256 & sha384 & sha512

    破解样例

    https://blog.csdn.net/qq_32534441/article/details/89669106

    对称加密

    常见的对称加密算法有AES、ChaCha20、3DES、Salsa20、DES、Blowfish、IDEA、RC4、RC5、RC6、Camellia。

    不安全的加密算法(禁止使用):DES、3DES、RC4、AES-128-ECB
    推荐使用的加密算法:AES-128(256)-CBC(GCM)、ChaCha20

    非对称加密算法

    https://blog.csdn.net/u014294681/article/details/86705999
    RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

    RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
    DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
    ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。

    为什么非对称加密算法,比对称加密算法更消耗性能,因为非对称加密算法涉及到了大数运算。

    TLS加密套件

    https://blog.csdn.net/herongoal/article/details/83414888
    https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml

    国密算法

    https://zhuanlan.zhihu.com/p/132352160

    1、SM1是一种分组加密算法

    对称加密算法中的分组加密算法,其分组长度、秘钥长度都是128bit,算法安全保密强度跟 AES 相当,但是算法不公开,仅以IP核的形式存在于芯片中,需要通过加密芯片的接口进行调用。

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

    2、SM2是非对称加密算法

    它是基于椭圆曲线密码的公钥密码算法标准,其秘钥长度256bit,包含数字签名、密钥交换和公钥加密,用于替换RSA/DH/ECDSA/ECDH等国际算法。可以满足电子认证服务系统等应用需求,由国家密码管理局于2010年12月17号发布。

    SM2采用的是ECC 256位的一种,其安全强度比RSA 2048位高,且运算速度快于RSA。

    3、SM3是一种密码杂凑算法

    用于替代MD5/SHA-1/SHA-2等国际算法,适用于数字签名和验证、消息认证码的生成与验证以及随机数的生成,可以满足电子认证服务系统等应用需求,于2010年12月17日发布。

    它是在SHA-256基础上改进实现的一种算法,采用Merkle-Damgard结构,消息分组长度为512bit,输出的摘要值长度为256bit。

    4、SM4是分组加密算法

    跟SM1类似,是我国自主设计的分组对称密码算法,用于替代DES/AES等国际算法。SM4算法与AES算法具有相同的密钥长度、分组长度,都是128bit。于2012年3月21日发布,适用于密码应用中使用分组密码的需求。

    5、SM7也是一种分组加密算法

    该算法没有公开。SM7适用于非接IC卡应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通、公交一卡通)。

    6、SM9是基于标识的非对称密码算法

    用椭圆曲线对实现的基于标识的数字签名算法、密钥交换协议、密钥封装机制和公钥加密与解密算法,包括数字签名生成算法和验证算法,并给出了数字签名与验证算法及其相应的流程。并提供了相应的流程。可以替代基于数字证书的PKI/CA体系。

    SM9主要用于用户的身份认证。据新华网公开报道,SM9的加密强度等同于3072位密钥的RSA加密算法,于2016年3月28日发布。

    国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。

    由于SM1、SM4加解密的分组大小为128bit,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充。

    其他的加密方式

    凯撒密码

    http://www.metools.info/code/c70.html
    移位加密

    Rot13

    https://www.ctftools.com/down/
    https://blog.csdn.net/weixin_38168081/article/details/99932438

    栅栏密码

    分行之后拼接

    培根密码

    https://blog.csdn.net/weixin_42109012/article/details/97644262

    猪圈密码

    https://www.cnblogs.com/Yuuki-/p/7897171.html

    摩斯密码

    电报

    展开全文
  • 常用的加密算法

    千次阅读 2021-02-11 09:21:48
    常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。 对称加密 指加密和解密使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用...

    常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。

    对称加密

        指加密和解密使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。

    常见的对称加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES

     

    非对称加密

        指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用户,企业需要生成n对密钥,并分发n个公钥。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得十分简单。同时,由于每个用户的私钥是唯一的,其他用户除了可以可以通过信息发送者的公钥来验证信息的来源是否真实,还可以确保发送者无法否认曾发送过该信息。非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比非对称加密慢上1000倍。

    常见的非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

     

    Hash算法

        Hash算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。

    常见的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1

     

        加密算法的效能通常可以按照算法本身的复杂程度、密钥长度(密钥越长越安全)、加解密速度等来衡量。上述的算法中,除了DES密钥长度不够、MD2速度较慢已逐渐被淘汰外,其他算法仍在目前的加密系统产品中使用。

     

    加密算法的选择

        前面的章节已经介绍了对称解密算法和非对称加密算法,有很多人疑惑:那我们在实际使用的过程中究竟该使用哪一种比较好呢?

        我们应该根据自己的使用特点来确定,由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。

    对称加密算法不能实现签名,因此签名只能非对称算法。

    由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。

        在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。

        如果在选定了加密算法后,那采用多少位的密钥呢?一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。

     

     

    .          加密算法介绍

    对称加密算法

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

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

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

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

    AES与3DES的比较

    算法名称

    算法类型

    密钥长度

    速度

    解密时间(建设机器每秒尝试255个密钥)

    资源消耗

    AES

    对称block密码

    128、192、256位

    1490000亿年

    3DES

    对称feistel密码

    112位或168位

    46亿年

    非对称算法

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

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

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

    ECC和RSA相比,在许多方面都有对绝对的优势,主要体现在以下方面:

    抗攻击性强。相同的密钥长度,其抗攻击性要强很多倍。

    计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。

    存储空间占用小。ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在IC卡上的应用具有特别重要的意义。

    带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多。带宽要求低使ECC在无线网络领域具有广泛的应用前景。

    下面两张表示是RSA和ECC的安全性和速度的比较。

    攻破时间(MIPS年)

    RSA/DSA(密钥长度)

    ECC密钥长度

    RSA/ECC密钥长度比

    104

    512

    106

    5:1

    108

    768

    132

    6:1

    1011

    1024

    160

    7:1

    1020

    2048

    210

    10:1

    1078

    21000

    600

    35:1

    攻破时间(MIPS年)

    RSA/DSA(密钥长度)

    ECC密钥长度

    RSA/ECC密钥长度比

    104

    512

    106

    5:1

    108

    768

    132

    6:1

    1011

    1024

    160

    7:1

    1020

    2048

    210

    10:1

    1078

    21000

    600

    35:1

    RSA和ECC安全模长得比较

    功能

    Security Builder 1.2

    BSAFE 3.0

    163位ECC(ms)

    1,023位RSA(ms)

    密钥对生成

    3.8

    4,708.3

    签名

    2.1(ECNRA)

    228.4

    3.0(ECDSA)

    认证

    9.9(ECNRA)

    12.7

    10.7(ECDSA)

    Diffie—Hellman密钥交换

    7.3

    1,654.0

    RSA和ECC速度比较

    散列算法

    散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。

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

    l         MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文。

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

    SHA-1与MD5的比较

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

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

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

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

    对称与非对称算法比较

        以上综述了两种加密方法的原理,总体来说主要有下面几个方面的不同:

    l         在管理方面:公钥密码算法只需要较少的资源就可以实现目的,在密钥的分配上,两者之间相差一个指数级别(一个是n一个是n2)。所以私钥密码算法不适应广域网的使用,而且更重要的一点是它不支持数字签名。

    l         在安全方面:由于公钥密码算法基于未解决的数学难题,在破解上几乎不可能。对于私钥密码算法,到了AES虽说从理论来说是不可能破解的,但从计算机的发展角度来看。公钥更具有优越性。

    l         从速度上来看:AES的软件实现速度已经达到了每秒数兆或数十兆比特。是公钥的100倍,如果用硬件来实现的话这个比值将扩大到1000倍。

    三.            加密算法的选择

    由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。

    对称加密算法不能实现签名,因此签名只能非对称算法。

    由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。

    在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。

    那采用多少位的密钥呢? RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。

    四.            密码学在现代的应用

    保密通信:保密通信是密码学产生的动因。使用公私钥密码体制进行保密通信时,信息接收者只有知道对应的密钥才可以解密该信息。

    数字签名:数字签名技术可以代替传统的手写签名,而且从安全的角度考虑,数字签名具有很好的防伪造功能。在政府机关、军事领域、商业领域有广泛的应用环境。

    秘密共享:秘密共享技术是指将一个秘密信息利用密码技术分拆成n个称为共享因子的信息,分发给n个成员,只有k(k≤n)个合法成员的共享因子才可以恢复该秘密信息,其中任何一个或m(m≤k)个成员合作都不知道该秘密信息。利用秘密共享技术可以控制任何需要多个人共同控制的秘密信息、命令等。

    认证功能:在公开的信道上进行敏感信息的传输,采用签名技术实现对消息的真实性、完整性进行验证,通过验证公钥证书实现对通信主体的身份验证。

    密钥管理:密钥是保密系统中更为脆弱而重要的环节,公钥密码体制是解决密钥管理工作的有力工具;利用公钥密码体制进行密钥协商和产生,保密通信双方不需要事先共享秘密信息;利用公钥密码体制进行密钥分发、保护、密钥托管、密钥恢复等。

    基于公钥密码体制可以实现以上通用功能以外,还可以设计实现以下的系统:安全电子商务系统、电子现金系统、电子选举系统、电子招投标系统、电子彩票系统等。

     

    一. AES对称加密:


                                                          AES加密



                             分组



     

     

    二. 分组密码的填充


                                                       分组密码的填充

     

    e.g.:

                                                             PKCS#5填充方式

     

     


     

    三. 流密码:

     



     

     

    四. 分组密码加密中的四种模式:

    3.1 ECB模式

    优点:

    1.简单;

    2.有利于并行计算;

    3.误差不会被传送;

    缺点:

    1.不能隐藏明文的模式;

    2.可能对明文进行主动攻击;

     


    3.2 CBC模式:

    优点:

    1.不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。

    缺点:

    1.不利于并行计算;

    2.误差传递;

    3.需要初始化向量IV

     

    3.3 CFB模式:


     优点:

    1.隐藏了明文模式;

    2.分组密码转化为流模式;

    3.可以及时加密传送小于分组的数据;

    缺点:

    1.不利于并行计算;

    2.误差传送:一个明文单元损坏影响多个单元;

    3.唯一的IV;

     

    3.4 OFB模式:


     优点:

    1.隐藏了明文模式;

    2.分组密码转化为流模式;

    3.可以及时加密传送小于分组的数据;

    缺点:

    1.不利于并行计算;

    2.对明文的主动攻击是可能的;

    3.误差传送:一个明文单元损坏影响多个单元;

     

    原文链接: https://blog.csdn.net/baidu_22254181/article/details/82594072

    展开全文
  • 加密算法调研

    千次阅读 2021-09-15 17:23:44
    加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。 为什么需要加密 区块链网络中,不存在监督机制,当交易和区块在网络中传播...

    什么是加密

    • 加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。

    为什么需要加密

    • 区块链网络中,不存在监督机制,当交易和区块在网络中传播时,如何才能保证才能保证数据不被篡改?

    加密类型分类

    • 对称加密

      • 定义:称作私钥加密,加密和解密使用相同的密钥,密钥:在加密的算法中,将明文转化成暗文。或者密文转化成明文的时候,需要用到的私钥。
      • 特点:算法公开、计算量小、加密速度快、加密效率高、适合加密比较大的文件;
      • 缺点:通信双方都使用密钥,安全性得不到保证,用户每次都是用该密钥,需要保证密钥的唯一性,使得双方所拥有的密钥数量很大,密钥管理麻烦,同样是只有一把密钥,暴露的可能性很大;
      • 举例:AES(wifi密码)、DES(wifi密码)、RC5(电视遥控器)
    • 非对称加密

      • 定义:非对称密钥需要的是两个不同的密钥,公有密钥和私有密钥,每个人都有这两个密钥,公开密钥是对外公开,任何人都可以获得,私有密钥是不公开,单独给指定的用户,如果用公开的密钥对文件进行加密,只有私有密钥才能够解开,如果用私有密钥对文件进行加密,那么只有相对应的公有密钥才能够解开。私有密钥可以通过一定推导公式推导出公有密钥,但是公有密钥不能推导出私有密钥
      • 特点:保密性好,消除了用户换密钥的需要。
      • 缺点:加密和解密的耗时长,不适合对文件加密,只适合对少数的数据加密;
      • 举例:使用最广泛的是RSA算法、ECC(椭圆曲线加密算法)。
    • 单项加密

      • 定义:加密的过程中不需要密钥,输入明文后系统自动经过加密算法进行加密,处理成密文,密文是无法解密的,只有重新输入明文才能解密,经过同样的加密算法进行处理,得到相同的密文并被系统重新识别后才能够真正的解密;
      • 举例:MD5加密(RSA公司发明)、SHA(美国国家安全局设计)

    hash算法

    • 是一个广义的算法,也可以认为是一种思想,使用Hash算法可以提高存储空间的利用率,可以提高数据的查询效率,也可以做数字签名来保障数据传递的安全性。所以Hash算法被广泛地应用在互联网应用中。

    MD5加密

    • MD5(RFC 1321)是 Rivest 于1991年对MD4的改进版本。它对输入仍以512位分组,其输出是4个32位字的级联,与 MD4 相同。MD5比MD4来得复杂,并且速度较之要慢一点,但更安全,在抗分析和抗差分方面表现更好。

    • MD5加密的特点:

      • 不可逆运算
      • 对不同的数据加密的结果是定长的32位字符(不管数据多大都一样)
      • 抗修改性:对原数据进行任何改动,哪怕只修改一个字节,所得到的 MD5 值都有很大区别
      • 强抗碰撞:想找到两个不同数据,使他们具有相同的 MD5 值,是非常困难的

    SHA加密

    • 安全哈希算法(Secure Hash Algorithm),是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布;是美国的政府标准。后四者有时并称为SHA-2。
    • SHA-3 第三代安全散列算法(Secure Hash Algorithm 3),之前名为Keccak算法,设计者宣称在 Intel Core 2 的CPU上面,此算法的性能是12.5cpb(每字节周期数,cycles per byte)。不过,在硬件实做上面,这个算法比起其他算法明显的快上很多。
    • SHA-3同样有SHA3-224、SHA3-256、SHA3-384,和SHA3-512,这四种格式。
    • 2005年二月,王小云、殷益群及于红波发表了对完整版SHA-1的攻击,只需少于2的69次方的计算复杂度,就能找到一组碰撞。(利用生日攻击法找到碰撞需要2的80次方的计算复杂度。)
    • 现在普遍接受的是,打破SHA-2不会像五年前那样容易.因此,在可预见的未来,SHA-2的所有变体仍然被认为是安全的.然而,由于NIST已经承诺在2012年将选择SHA-3,并且由于很多人花了相当多的时间和精力来为比赛提交和评估新的哈希函数,并且由于有一些非常好的设计在决赛入围者中,毕竟不要选择他们中的任何一个,这似乎是一个耻辱.所以NIST决定选择Keccak作为SHA-3,并推荐它作为SHA-2散列函数的替代(而不是后继).

    SHA2算法的区别

    • 哈希值越大,组合越多,其安全性就越高。加密哈希算法的一个重要功能是产生独特的散列,当两个不同的值或文件可以产生相同的散列,则会创建所谓的碰撞(即两个不同的讯息对应到相同的讯息摘要),只有在不发生碰撞时,才能保证数字签名的安全性。
    • 每个哈希位有两个可能值:0和1。每一个独立的哈希值通过位的可能值的数量。对于SHA-256,有2的256次方种组合。这是一个庞大的数值。哈希值越大,碰撞的机率就越小。在技术上,每个散列算法,都会发生碰撞。因为SHA-1的大小结构都碰撞的机率比较大,所以SHA-1被认为是不安全的。
    • SHA-256和SHA-512是很新的散列函数,前者以定义一个word为32位,后者则定义一个word为64位。它们分别使用了不同的常量,然而,实际上二者结构是相同的,只在循环运行的次数上有所差异。SHA-224以及SHA-384则是前述二种散列函数的截短版,利用不同的初始值做计算。

    签名和加密的区别

    • 数据加密使用的是接受方的密钥对,任何知道接受方公钥的都可以向接受方发送消息,但是只有拥有私钥的才能解密出来
    • 数据签名使用的是发送方的密钥对,任何接受方都可以用公钥解密,验证数据的正确性
    • 数据加密保证了数据接受方的数据安全性
    • 数据签名保证了数据发送方的数据安全性

    交易签名算法

    • 常用的非对称加密算法为:RSA,ECC(椭圆曲线加密算法)

    RSA算法

    • 由 Rivet、Shamir、Adelman 提出了 RSA 算法。RSA 就是他们三人姓氏开头字母拼在一起组成的。是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
    • RSA利用了单向函数正向求解很简单,反向求解很复杂的特性。也就是说,对极大整数做因数分解的难度决定了RSA算法的可靠性。理论上,只要其钥匙的长度n足够长,用RSA加密的信息实际上是不能被解破的。
    • 随着分解大整数方法的进步及完善、计算机速度的提高以及计算机网络的发展,为了保障数据的安全,RSA 的密钥需要不断增加,但是,密钥长度的增加导致了其加解密的速度大为降低,硬件实现也变得越来越难以忍受,这对使用 RSA 的应用带来了很重的负担。

    ECC(Elliptic curve cryptography,缩写为ECC)算法

    • 最初由Koblitz和Miller两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性 ECDLP 是比因子分解问题更难的问题,它是指数级的难度。

    • 一条椭圆曲线就是一组被 y2=x3+ax+b 定义的且满足 4a3+27b2!=0 的点集。 4a3+27b2!=0 这个限定条件是为了保证曲线不包含奇点(singularities). y2=x3+ax+b 这个方程称为椭圆曲线的维尔斯特拉斯标准形式(Weierstrass normal form)。

    • ECC 和 RSA 相比,在许多方面都有对绝对的优势,主要体现在以下方面:

      • 抗攻击性强
      • 内容使用少
      • 加密速度快

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-etviAg4m-1631697814015)(https://nac.kucoin.com:1009/download/attachments/63714114/311249-b1d9584b6c107576.jpg?version=1&modificationDate=1612495678620&api=v2)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8c1CwPx9-1631697814018)(https://nac.kucoin.com:1009/download/attachments/63714114/WX20210205-112633.png?version=1&modificationDate=1612495714253&api=v2)]

    • 椭圆曲线算法由于采用的椭圆曲线的不同,具有多种不同的标准:

      • NIST:典型的曲线如P-256/P-384/P-521等;
      • SECG标准,典型的如Secp256k1/Secp256r1/ secp192k1/ secp192r1等;
      • ECC25519,主要指Ed25519数字签名和Curve25519密钥协商标准等;
      • 国产密码算法,中国国家密码局制定的密码学算法标准,典型的如SM2/3/4等。

    以太坊中使用的交易签名算法

    • 以太坊使用的是数字签名算法ECDSA-secp256k1。

    什么是ECDSA

    • 以太坊数字签名算法使用的是椭圆曲线数字签名算法,英文简称ECDSA。其中EC是“椭圆曲线”的简称,DSA是“数字签名算法”的简称。

    什么是secp256k1

    • 以太坊使用了一套叫secp256k1的参数确定了椭圆的形状。所以,以太坊的签名算法全称就是是ECDSA-secp256k1。

    xuperchain使用的交易签名算法

    • 百度超级链目前系统中使用了三种不同的曲线

      • 使用Nist P256+ECDSA的默认插件
      • 使用Nist P256 + Schnorr签名的插件,可以提供更高的签名验签性能
      • 使用SM2/3/4的国密插件,符合中国国家密码局制定的密码学标准
    • Nist P256:

      • 又名secp256r1,与secp256k1的区别是椭圆曲线y2=x3+ax+b中,a和b的取值不相同
    • Schnorr签名算法:

      • Schnorr签名算法是由德国数学家、密码学家Claus Schnorr提出。
      • Schnorr与ECDSA使用同一个椭圆曲线:secp256k1 curve,升级起来的改动非常小。
      • Schnorr签名算法几乎在各个层面均优于比特币现有的签名算法ECDSA:性能,安全,体积,扩展性等方面。
      • 算法介绍
    • Schnorr Ring 签名算法

      • 环签名是一种数字签名技术,环签名的一个安全属性是无法通过计算还原出一组用户中具体使用私钥签名的用户。也就是说,使用环签名技术可以使一组用户中的某一个人对消息进行签名,而并不会泄露签名者是这组用户中的哪个人。环签名与组签名类似,但在两个关键方面有所不同:第一,单个签名具有匿名性; 第二,任何一批用户都可以作为一个组使用,无需额外设置。

    比特币使用的交易签名算法

    • 比特币采用的secp256k1的椭圆曲线算法
    • 为什么比特币要选择 secp256k1 签名算法而不是其他已流行的算法呢?比特币开发者社区曾讨论过 secp256k1 是否安全。中本聪没有明确解释,只是说道”有根据的推测”。从社区的讨论中,有推测是其它的曲线,比如secp256r1中的参数是美国国安局精心挑选的,相当于安全性受到权威机构的干涉。
    • 2020 年 1 月,由比特币核心开发人员 Pieter Wuille 于去年 5 月提出的 Taproot/Schnorr 软分叉升级提案已正式作为比特币改进提案(BIPs)发布,相关提案序号为 BIP 340-342。Taproot/Schnorr 升级如果获得社区支持,将是比特币自闪电网络上线后最大的技术拓展。详细说明
    • secp256k1代码仓库

    cosmosSDK使用的交易签名算法

    • ed25519采用的曲线方程为y2=x3+486662x2+x, modulo p=2255-19。
    • 私钥长度:32字节
    • 公钥长度:32字节
    • 签名长度:64字节
    • 算法

    fabric使用的交易签名算法

    • fabric采用的secp256k1的椭圆曲线算法

    地址生成算法

    以太坊

    • 每个账户都由一对钥匙定义,一个私钥(Private Key)和一个公钥(Public Key)。 账户以地址为索引,地址由公钥衍生而来,取公钥的最后20个字节。每对私钥/地址都编码在一个钥匙文件里(Keystore)。

    • 地址的生成的流程是:私钥 -> 公钥 -> 地址。因此地址的生成需要三步:

      • 生成一个随机的私钥(32字节):随机数产生的256bit私钥示例(256bit 16进制32字节):18e14a7b6a307f426a94f8114701e7c8e774e7f9a47e2c2035db29a206321725
      • 通过私钥生成公钥(64字节):采用椭圆曲线数字签名算法ECDSA-secp256k1将私钥(32字节)映射成公钥(64字节):拿公钥(非压缩公钥)来hash,计算公钥的 Keccak-256 哈希值(32bytes):fc12ad814631ba689f7abe671016f75c54c607f082ae6b0881fac0abeda21781
      • 通过公钥得到地址(20字节):取上一步结果取后20bytes即以太坊地址:0x1016f75c54c607f082ae6b0881fac0abeda21781

    比特币

    • 随机选取一个32字节的数、大小介于1 ~ 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之间,作为私钥。18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725
    • 使用椭圆曲线加密算法(ECDSA-secp256k1)计算私钥所对应的非压缩公钥。 (共65字节, 1字节 0x04, 32字节为x坐标,32字节为y坐标)0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6
    • 计算公钥的SHA-256哈希值 600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408
    • 计算上一步哈希值的RIPEMD-160哈希值 010966776006953D5567439E5E39F86A0D273BEE
    • 在上一步结果之间加入地址版本号(如比特币主网版本号"0x00")00010966776006953D5567439E5E39F86A0D273BEE
    • 计算上一步结果的SHA-256哈希值 445C7A8007A93D8733188288BB320A8FE2DEBD2AE1B47F0F50BC10BAE845C094
    • 再次计算上一步结果的SHA-256哈希值 D61967F63C7DD183914A4AE452C9F6AD5D462CE3D277798075B107615C1A8A30
    • 取上一步结果的前4个字节(8位十六进制数)D61967F6,把这4个字节加在第五步结果的后面,作为校验(这就是比特币地址的16进制形态)00010966776006953D5567439E5E39F86A0D273BEED61967F6
    • 用base58表示法变换一下地址(这就是最常见的比特币地址形态)16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM

    xuperchain

    • 初始化一个P-256曲线对象
    • 随机生成一个40字节的byte数组,并用P-256加密算法生成私钥
    • 通过私钥使用ECDSA加密算法生成公钥
    • 计算公钥的SHA-256的哈希值
    • 再用上一步的哈希值计算RIPEMD-160哈希值
    • 然后在上一步计算的哈希值钱加上加密标识
    • 然后再计算两次SHA-256的哈希值
    • 取上一步结果的前4个字节(8位十六进制数),把这4个字节加在第六步结果的后面,作为校验
    • 用base58表示法变换一下地址(这就是最常见的比特币地址形态)

    fabric

    • 初始化一个P-256曲线对象
    • 随机生成一个40字节的byte数组,并用P-256加密算法生成私钥
    • 将私钥存储到指定文件夹
    • 用私钥创建一个签名对象
    • 通过私钥使用ECDSA加密算法生成公钥
    • 使用CA 签名公钥生成X509证书
    • 生成tls通信相关私钥和公钥以及证书,具体流程同上
    展开全文
  • js实现rsa加密算法

    2014-09-21 00:53:55
    本rsa算法是使用Java与javascript加密解密范例代码,该资料从互联网收集,加上了自己的使用体会,如果对你有帮助那是万幸! js加密部分
  • 加密算法及应用总结

    千次阅读 2020-09-01 13:03:22
    加密算法 使用密码学可以达到以下目的: 保密性:防止用户的标识或数据被读取。 数据完整性:防止数据被更改。 身份验证:确保数据发自特定的一方。 在加密中,应该保密的仅仅是明文和密钥。也就是说我们通常假设...
  • RSA加密算法

    千次阅读 2022-03-02 21:25:22
    公钥加密算法(RSA)是首个适用以签名作为加密的算法。被用于银行网上支付、电商交易。 RSA是Rivest、Shamir、Adleman三位数学家的缩写。其数学原理是大整数因数分解极其苦难的原因设计的一种算法。 蒙哥马利幂运算 ...
  • 密码学专题 对称加密算法

    千次阅读 2021-11-16 18:02:06
    一般来说,使用OpenSSL对称加密算法有两种方式,一种是使用API函数的方式,一种是使用OpenSSL提供的对称加密算法指令方式。本书将介绍对称加密算法的指令方式 OpenSSL的对称加密算法指令主要用来对数据进行加密和...
  • 最近在做安全相关的工作,那么我们在什么情况下应该使用什么样的加密算法? 什么样的加密算法是安全的呢? 安全的基础上,性能如何呢? 这里记录一下 1、首先,为什么要加密? 数据存储和传输存在的风险: ...
  • 常用加密算法--对称加密算法

    千次阅读 2019-10-26 20:36:11
    加密算法中加人解密操作让人感觉很不可思议,实际上这个方法是IBM公司设计出来的,目的是为了让三重DES能够兼容普通的DES。 当三重DES中所有的密钥都相同时,三重DES也就等同于普通的DES了 。这是因为在前两步...
  • 加密算法--DES对称加密算法详解

    千次阅读 2021-02-01 22:48:32
    加密算法–DES对称加密算法详解 DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中...
  • RSA加密算法(c语言)

    2015-06-03 00:29:47
    个人编的RSA加密程序,要想了解具体算法说明或者其他加密算法请关注我的博客----适合任何对算法理解不透彻的密码初学者和爱好者。
  • 非对称加密算法

    千次阅读 2022-04-28 17:53:16
    非对称加密需要两把密钥:公钥和私钥,他们是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。 2....
  • 浅谈常见的七种加密算法及实现

    千次阅读 2021-02-22 18:00:07
    数字签名、信息加密是前后端开发都经常需要使用到的技术,应用场景包括了用户登入、交易、信息通讯、oauth等等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的签名加密算法来达到业务目标...
  • 对称加密算法和非对称加密算法

    千次阅读 2020-10-15 17:47:18
    在对称加密算法中,数据发信方将明文( 原始数据 )和加密 密钥 (mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。 常用的对称加密算法:AES,RC4,3DES 传输的示意图如下所示: 第二 、非...
  • 摘要算法和加密算法

    千次阅读 2022-04-01 14:04:16
    概要算法和加密算法的讲解与比较
  • AES加密算法

    千次阅读 2021-04-20 10:26:08
    前言 上一节介绍的3DES,实际上只是DES的一个变体,他通过三重加密...AES算法全称Advanced Encryption Standard,又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分
  • AES加密算法(java)实现

    热门讨论 2015-01-15 16:32:38
    2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。本软件是用java语言开发,实现了AES算法对文件的加密和解密,并在界面上加了进度条,来提示用户加密解密的进度。如果不足之处,欢迎留言。
  • 国产加密算法

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

    千次阅读 多人点赞 2019-12-20 00:06:39
    加密算法,是现在每个软件项目里必须用到的内容。广泛应用在包括了用户登入、数字签名、数据传输等多个场合。那大家都知道那些呢?今天我把常见的加密算法全部整理在这里,供大家学习参考。 首先,大家要知道加密...
  • HTTPS及加密算法总结

    千次阅读 2021-04-19 22:23:19
    加密算法整体可以分为:可逆加密、不可逆加密 可逆加密又可以分为对称加密和非对称加密 一、可逆加密 1. 对称加密算法 对称加密算法,又称为共享密钥加密算法。在数据加密和解密时使用的是同一个密钥,这就导致密钥...
  • RSA加密算法原理

    万次阅读 多人点赞 2019-10-08 00:58:01
    RSA加密算法是一种非对称加密算法,所谓非对称,就是指该算法加密和解密使用不同的密钥,即使用加密密钥进行加密、解密密钥进行解密。在RAS算法中,加密密钥(即公开密钥)PK是公开信息,而解...
  • js逆向之加密算法介绍

    千次阅读 2021-12-05 18:11:52
    目录 前言 一、js常见的加密方式 Md5加密 对称加密DES/AES 非对称加密RSA ...何为逆向:与逆向相对的是正向,正向即采用某种加密方式对数据进行加密,或...接下来就对如何进行js逆向,找出其加密算法做一个分析。 一
  • 对称加密算法基本介绍

    千次阅读 2022-04-10 12:07:27
    对称加密算法 采用单钥密码的加密方法,同一个密钥可以同时用来加密和解密,这种加密方法称为对称加密,也称为单密钥加密。具体消息加密过程如下。常见的对称加密算法有:DES,3DES,AES,RC2,RC4, RC5。 加密...
  • 常见的加密算法分类及介绍

    千次阅读 2021-03-04 14:20:00
    1.加密算法的分类 根本不考虑解密问题; 私用密钥加密技术:对称式加密(Symmetric Key Encryption):对称式加密方式对加密和解密使用相同的密钥。通常,这种加密方式在应用中难以实施,因为用同一种安全方式共享...
  • 几种常见的加密算法

    千次阅读 2020-01-13 14:43:39
    数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码为“密文”,使其只能在输入相应的密钥之后才能显示出原容,通过这样的途径来达到保护数据不被非法人窃取、阅读的...
  • 浅谈加密算法 aes

    千次阅读 2022-04-07 18:50:24
    加密算法我们整体可以分为:不可逆加密算法和可逆加密算法。 不可逆加密算法 常见的不可逆加密算法有MD5,HMAC,SHA1、SHA-224、SHA-256、SHA-384,和SHA-512。他们的特点是,不能从加密后的结果解密出原文,主要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 396,571
精华内容 158,628
关键字:

加密算法