精华内容
下载资源
问答
  • 下列不是加密算法的是
    万次阅读
    2019-05-18 11:37:39

    下面算法中,不属于公开密钥加密算法的是()。D

    A.ECC
    B.DSA
    C.RSA
    D.DES

    常用的公钥加密算法有RSA、DSA、ElGamal和ECC。

    常用的对称加密算法有DES、3DES、IDEA、AES、Blowfish、Twofish和RSA公司的RC系列算法(如RC2、RC4、RC5、RC6)等。

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

    公钥加密,也叫非对称(密钥)加密(public key encryption),属于通信科技下的网络安全二级学科,指的是由对应的一对唯一性密钥(即公开密钥和私有密钥)组成的加密方法。

    作者:dream_网络安全
    来源:CSDN
    原文:https://blog.csdn.net/weixin_42859280/article/details/90179154
    版权声明:本文为博主原创文章,转载请附上博文链接!

    更多相关内容
  • 加密算法总结

    千次阅读 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

    摩斯密码

    电报

    展开全文
  • 常用加密算法及应用

    2019-05-31 17:01:12
    参考: https://blog.csdn.net/hugengyong/article/details/77145849 http://www.ehcoo.com/cryptology.html ... 前言 加密算法分对称加密和非对称算法,其中对称加密算法的加密与解密密...

    前言
    加密算法分对称加密和非对称算法,其中对称加密算法的加密与解密密钥相同,非对称加密算法的加密密钥与解密密钥不同,此外,还有一类不需要密钥的散列算法。
    常见的对称加密算法主要有DES、3DES、AES等,常见的非对称算法主要有RSA、DSA等,散列算法主要有SHA-1、MD5等。
    对称算法又可分为两类。一次只对明文中的单个位(有时对字节)运算的算法称为序列算法或序列密码。另一类算法是对明文的一组位进行运算(即运算之前将明文分为若干组,然后分别对每一组进行运算,这些位组称为分组),相应的算法称为分组算法或分组密码。

    保证安全三方面入手:
    认证用户和服务器,确保数据发送到正确的客户机和服务器
    加密数据以防止数据中途被窃取
    维护数据的完整性,确保数据在传输过程中不被改变。

    1 加密算法
    1.1 DES
    DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。DES加密算法是对密钥进行保密,而公开算法,包括加密和解密算法。这样,只有掌握了和发送方相同密钥的人才能解读由DES加密算法加密的密文数据。因此,破译DES加密算法实际上就是搜索密钥的编码。对于56位长度的密钥来说,如果用穷举法来进行搜索的话,其运算次数为2的56次方。

    1.2 3DES
    是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高;

    1.3 AES
    AES加密算法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准,AES标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

    1.4 RSA
    是基于大整数因子分解问题(IFP)
    RSA加密算法是目前最有影响力的公钥加密算法,并且被普遍认为是目前最优秀的公钥方案之一。RSA是第一个能同时用于加密和数宇签名的算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA加密算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

    1.5 DSA
    DSA是基于整数有限域离散对数难题的,DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。这一点,RSA算法做不到。
    相比于RSA,DSA 只用于签名,而 RSA 可用于签名和加密。

    1.6 ECC
    基于椭圆曲线上离散对数计算问题(ECDLP)
    1985 年 N.Koblitz 和 Miller 提出将椭圆曲线用于密码算法,全称:Elliptic curve cryptography,缩写为 ECC,根据是有限域上的椭圆曲线上的点群中的离散对数问题 ECDLP。ECDLP 是比因子分解问题更难的问题,它是指数级的难度。
    随着安全等级的增加,当前加密法的密钥长度也会成指数增加,而 ECC 密钥长度 却只是成线性增加。例如,128 位安全加密需要 3,072 位 RSA 密钥,却只需要一 个 256 位 ECC 密钥。增加到 256 位安全加密需要一个 15,360 位 RSA 密钥,却只需要一个 512 位 ECC 密钥。ECC 具有如此卓越的按位比率加密的性能,预计其特点将成为安全系统关注的重点

    1.7 Elgamal
    ElGamal加密算法是一个基于迪菲-赫尔曼密钥交换的非对称加密算法。它在1985年由塔希尔·盖莫尔提出。

    1.8 HMAC
    MAC(Message Authentication Code,消息认证码算法)是含有密钥散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加上了密钥。因此MAC算法也经常被称作HMAC算法。
    HMAC算法首先它是基于信息摘要算法的。目前主要集合了MD和SHA两大系列消息摘要算法。
    HMAC算法除了需要信息摘要算法外,还需要一个密钥。HMAC的密钥可以是任何长度,如果密钥的长度超过了摘要算法信息分组的长度,则首先使用摘要算法计算密钥的摘要作为新的密钥。一般不建议使用太短的密钥,因为密钥的长度与安全强度是相关的。通常选取密钥长度不小于所选用摘要算法输出的信息摘要的长度。

    1.9 MD5
    MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。
    MD5被广泛用于各种软件的密码认证和钥匙识别上。MD5用的是哈希函数,它的典型应用是对一段信息产生信息摘要,以防止被篡改。MD5的典型应用是对一段Message产生fingerprin指纹,以防止被“篡改”。如果再有—个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。MD5还广泛用于操作系统的登陆认证上,如UNIX、各类BSD系统登录密码、数字签名等诸多方。

    1.10 SHA1
    SHA1是和MD5一样流行的消息摘要算法。SHA加密算法模仿MD4加密算法。
    SHA1主要适用于数字签名标准里面定义的数字签名算法。对于长度小于2“64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。SHA1不可以从消息摘要中复原信息,而且两个不同的消息不会产生同样的消息摘要。这样,SHA1就可以验证数据的完整性,所以说SHA1是为了保证文件完整性的技术。
    SHA1是一种比MD5的安全性强的算法,理论上,凡是采取“消息摘要”方式的数字验证算法都是有“碰撞”的——也就是两个不同的东西算出的消息摘要相同,互通作弊图就是如此。但是安全性高的算法要找到指定数据的“碰撞”很困难,而利用公式来计算“碰撞”就更困难一目前为止通用安全算法中仅有MD5被破解。

    2 优缺点
    2.1对称加密算法

    名称密钥长度运算速度安全性资源消耗
    DES56位较快
    3DES112位或168位
    AES128、192、256位

    2.2非对称加密算法

    名称成熟度安全性(取决于密钥长度)运算速度资源消耗
    RSA
    ECC低(计算量小,存储空间占用小,带宽要求低)
    DSA只能用于数字签名

    2.3对称与非对称算法

    名称密钥管理安全性速度
    对称算法比较难,不适合互联网,一般用于内部系统快好几个数量级(软件加解密速度至少快100倍,每秒可以加解密数M比特数据),适合大数据量的加解密处理
    非对称算法密钥容易管理慢,适合小数据量加解密或数据签名

    2.4散列算法

    名称安全性速度
    SHA-1
    MD5

    3 数据加密
    保证传输的数据安全,即使被截获报文,在没有密匙的情况下也无法得知报文真实内容。
    一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。

    4 数字摘要与数字签名
    4.1数字摘要
    4.1.1定义
    数字摘要技术用于对所要传输的数据进行运算生成信息摘要,它并不是一种加密机制,但却能产生信息的数字"指纹",它的目的是为了确保数据没有被修改或变化,保证信息的完整性不被破坏

    4.1.2特点
    1.、信息摘要算法实际上是一个单向散列函数。(单向散列函数就是不可逆的过程,比如A根据某种算法得到结果B,但是结果B不能根据某种算法得到结果A)

    2、数据块经过单向散列函数得到一个固定长度的散列值,攻击者不可能通过散列值二编造数据块,使得编造的数据块的散列值和原来数据块的散列值相同。

    3、常用的信息摘要算法有:MD5,SHA等。

    4.2数字签名
    4.2.1定义
    数字签名用来保证信息传输过程中完整性、提供信息发送者的身份认证和不可抵赖性。使用公开密钥算法是实现数字签名的主要技术。

    数字签名技术就是对“非对称密钥加解密”和“数字摘要“两项技术的应用,它将摘要信息用发送者的私钥加密,与原文一起传送给接收者。

    数字签名只能验证数据的完整性,数据本身是否加密不属于数字签名的控制范围

    使用公开密钥算法,当你用自己的私钥加密了一个信息,并将其发送给一个朋友时,如果你的朋友能够使用你的公钥来解密出信息,他就能确定信息必定是从你那里发来的,而不是一些冒名顶替的。这实际上就是数字签名的原理。
    由于公开密钥算法的运算速度比较慢,因此可使用HASH函数对要签名的信息进行摘要处理,减小使用公开密钥算法的运算量。因此,数字签名一般是结合了数字摘要技术和公开密钥算法共同使用
    从数字签名的解释中我们大致可以看出数字签名的作用了,比如,现在A给B传送一份数据,A委托B将这份数据整理出来然后再发给A,并且A会给B一定的报酬,但是当B将数据整理完成发给A后,A不愿意给B报酬,于是A否认了此事。这时候,运用数字签名技术就会解决这个问题。以为这份数据经过A的数字签名之后,也就是经过A的私钥加密之后,发送给B,这样就能证明A给B发送过原始的数据,B将整理完的数据数字签名之后发给A,这样就能证明B将原始数据整理了一遍。

    数字签名与信息摘要在数据传送中防止数据被篡改的应用。
    在这里插入图片描述
    上面的图片是A给B传送数据的时候,同时用了信息摘要技术和数字签名技术,B接受到数据之后,用A的公钥将传送过来的已加密的信息摘要解密,然后与原始数据的信息摘要进行核对,如果一样,则证明原始数据在传输过程中没有被篡改。
    以上的通信模型很好的解决了数据完整性、不可否认性,但这个模型的依赖的关键点是双方公钥。
    这个模型中双方公钥来源无法验证,而且在通讯前,如何获得每个人的可信任的公钥也成了整个系统的关键。
    因此,需要一套系统,能够解决以上存在的种种问题:身份认证、数据完整性、密钥交换、操作的不可否认性,它就是PKI。

    4.3实现数字签名
    签名信息
    1. 对信息M进行HASH函数处理,生成摘要H
    2. 用你的(发送者的)私钥加密H来获取数字签名S
    3. 发送 {M, S}

    验证签名信息
    1. 接受{M, S} 并区分开它们
    2. 对接收到的信息 M进行HASH函数处理,生成摘要H*
    3. 取得发送者的公钥
    4. 用公钥解密S,来获取H
    5. 比较H和H*,如果H和H*是一样的,即说明信息在发送过程中没有被篡改,反之即反
    由于对信息进行数字签名后,明文信息也通过网络进行传递,因此,在做完数字签名后,还要对整个信息(包括明文信息M和数字签名的密文信息S)进行加密,以保证信息的保密性。

    5 数据加密和数字签名的区别
    数据加密:
    用公钥加密,只能用自己的私钥解密,因为私钥只有你自己有,所以别人不可能能够解密,看到你的内容,保证了数据的保密性。

    数字签名:
    用私钥加密,只能用公钥解密,任何人都可以用公钥解密。因为私钥只有你自己有,所以保证了该数据肯定是从你这发送出去的,不可能是别人发的。

    从以上解释可以看出,数据签名和数据加密的过程都是使用公开的密钥系统,但实现的过程正好相反,

    数据加密使用的是接受方的密钥对,任何知道接受方公钥的都可以向接受方发送消息,但是只有拥有私钥的才能解密出来;

    数据签名使用的是发送方的密钥对,任何接受方都可以用公钥解密,验证数据的正确性。

    总结:
    数据加密保证了数据接受方的数据安全性。
    数据签名保证了数据发送方的数据安全性。

    6 数字证书–值得信赖的公钥
    只从”准确认证发送方身份“和”确保数据完整性“两个安全方面来看,数字签名似乎已经完全做到了,还有漏洞存在的可能么?有,漏洞不在数字签名技术本身,而在它所依赖的密钥,只有密钥是真实可靠的前提下,使用数字签名才是安全有效的。考虑这种可能的情况:在上述发送方向接收方传送报文的例子中,如果发送方所持有的公钥来路有问题或是被替换了,那么,持有对应私钥的冒充接受方就有可能接收到发送方发送的报文。这里的问题就是:对于请求方来说,它怎么能确定它所得到的公钥一定是从目标主机那里发布的,而且没有被篡改过呢?亦或者请求的目标主机本本身就从事窃取用户信息的不正当行为呢?这时候,我们需要有一个权威的值得信赖的第三方机构(一般是由政府审核并授权的机构)来统一对外发放主机机构的公钥,只要请求方这种机构获取公钥,就避免了上述问题的发生。这种机构被称为证书权威机构(Certificate Authority, CA),它们所发放的包含主机机构名称、公钥在内的文件就是人们所说的“数字证书”。

    数字证书的颁发过程一般为:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布。数字证书各不相同,每种证书可提供不同级别的可信度。可以从证书发行机构获得您自己的数字证书。

    7 SSL
    当所有上面提及的技术介绍完之后,我们需要把它们统一起来应用于实际的网络安全传输了,因此,人们制定了一套协议,来定义有关的方方面面,这个协议就是SSL

    SSL协议在握手阶段使用的是非对称加密,在传输阶段使用的是对称加密,也就是说在SSL上传送的数据是使用对称密钥加密的!这并不奇怪,因为非对称加密的速度缓慢,耗费资源。其实当客户端和主机使用非对称加密方式建立连接后,客户端和主机已经决定好了在传输过程使用的对称加密算法和关键的对称加密密钥,由于这个过程本身是安全可靠的,也即对称加密密钥是不可能被窃取盗用的,因此,保证了在传输过程中对数据进行对称加密也是安全可靠的,因为除了客户端和主机之外,不可能有第三方窃取并解密出对称加密密钥!

    SSL协议主要确保了以下安全问题
      1)认证用户和服务器,确保数据发送到正确的客户机和服务器
      2)加密数据以防止数据中途被窃取
      3)维护数据的完整性,确保数据在传输过程中不被改变。
      
    8 HTTPS
    HTTPS是由SSL+HTTP协议构建的可进行加密传输、身份认证(确认客户端连接的目标主机是否是真实正确的主机)的网络协议。https所能实现的安全保证,正是SSL所能解决的安全问题

    https的主要缺点就是性能问题。造成https性能低于http的原因有两个:
    对数据进行加解密决定了它比http慢。
    另外一个重要原因的是https禁用了缓存。

    相关测试数据表明使用HTTPS协议传输数据的工作效率只有使用HTTP协议传输的十分之一。因此对于一个网站来说,只有那对那些安全要求极高的的数据才会选择使用https进行传输。

    参考:
    https://blog.csdn.net/hugengyong/article/details/77145849
    http://www.ehcoo.com/cryptology.html
    http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html

    展开全文
  • RSA加密算法

    千次阅读 2022-04-14 15:48:30
    RSA加密算法,逆元,费马小定理,扩展欧几里得,中国剩余定理

    什么是RSA

    一些废话

    RSA是一种公钥密码算法,它的名字是由它的三位开发者,即Ron Rivest、Adi Shamir 和 Leonard Adleman 的姓氏的首字母组成的。RSA可以被用于公钥密码和数字签名。RSA是被研究得最广泛的公钥算法,从提出到现在已近三十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。1983年麻省理工学院在美国为RSA算法申请了专利。

    安全性

    RSA的安全性依赖于大数分解。换句话说,RSA的难度与大数分解难度等价,一旦发现了对大整数进行质因数分解的高效算法,RSA就能够被破译。这点将在下述对 N 的讨论着重体现。

    RSA算法参数

    参数解释公式描述
    P、Q质数P*Q=N分解模数N后得到的值
    N公共模数N=P*Q在RAS中进行模运算
    E公钥指数gcd(φ,e)=11<e<φ
    D私钥指数gcd(φ,d)=11<d<φ
    φ欧拉公式φ=(P-1)*(Q-1)/
    c密文c=me mod N/
    d明文m=cd mod N/

    参数解释

    加密算法

    由上面的参数表可知,RSA加密过程可以用下面这个公式表示

    c ≡ m e mod N

    也就是说,RSA的密文是对代表明文的数字 m 的 e 次方对 N 求余的结果

    公钥
    上述加密算法中出现的两个数—— E 和 N ,到底是什么数呢?由上面的加密算法可知,在已知明文的情况下,只要只要 E 和 N 这两个数,任何人都可以完成对加密的运算。所以说, E 和 N 是RSA加密的密钥,换句话说,E 和 N 的组合就是公钥,表示为公钥是(E,N)

    公钥是可以任意公开的

    解密算法

    同样由上面的参数表可知,RSA解密过程可以用下面这个公式表示

    m≡cd mod N

    也就是说,RSA的明文是对代表密文的数字 c 的 d 次方对 N 求余的结果

    可以发现形式上跟加密算法高度对称

    私钥
    参考公钥的解释,私钥也就明了了。在已知密文的情况下,只要只要 D 和 N 这两个数,任何人都可以完成对解密的运算。所以说, D 和 N 是RSA解密的密钥,换句话说,D 和 N 的组合就是私钥,表示为私钥是(D,N)

    私钥必须妥善保管,不能告诉任何人
    在这里插入图片描述

    生成密钥对

    由上述分析可知,加解密的过程需要三个参数 E、D、N,那么这三个参数该怎么生成呢?由于 E 和 N 是公钥,D 和 N 是私钥,求这三个数的过程就是生成密钥对。生成步骤如下:

    1、求N
    2、求φ
    3、求E
    4、求D

    求N
    首先准备两个很大的质数 P、Q。上述所说的算法安全性与大数分解有关,就体现在这了,我们反过来想,如果 p 和 q 选的很小,那对于 N 的求解将会变得非常简单,密码就容易被破译;但是物极必反,也不能选的太大,太大会使得计算时间大大延长。

    准备好之后,N 由以下公式求得

    P*Q=N

    求φ
    φ这个数在加密解密的过程中都不曾出现,它只出现在生成密钥对的过程中。由下列公式求得

    φ=(P-1)*(Q-1)

    求E
    e 的求取基于上述的 φ 值。首先明确 e 的取值范围 1<e<φ,并且 gcd(φ,e)=1(φ 与 e 的最大公约数为1,即两者互质)。之所以要加上1这个条件,是为了保证一定存在解密时需要使用的参数 D

    至此,我们生成了密钥对中的公钥

    求D
    d 的求取基于上述的 e 值和 φ 值。首先明确 d 的取值范围 1<d<φ,并且 gcd(φ,d)=1。d 的求解方式如下

    e*d mod φ=1

    至此,我们生成了密钥对中的私钥
    在这里插入图片描述

    例子

    密钥对生成
    ① 求N
    首先随便找两个素数,比如3、11(这边自己实验就取小数展示)

    p = 3
    q = 11

    得到 N

    N = 3*11 = 33

    ② 求φ

    φ = 2*10= 20

    ③ 求e

    gcd(φ,e)=1

    满足条件的有很多,3,7,11,13,17,19… 这边我们选择3来作为 e。
    至此,e = 3 ,N = 33,这就是公钥

    ④ 求d

    e*d mod φ=1

    容易得 d = 7
    至此,d = 7 ,N = 33,这就是私钥

    加密
    要加密的明文必须是小于 N 的数,也就是小于33的数,这边就随便取一个5吧

    c=me mod N = 53 mod 33 = 26

    解密

    m=cd mod N = 267 mod 33 = 5

    常见大整数N的分解方法

    对于常规得CTF题来说,通常会给大家公钥指数 E 和公共模数 N,而这个模数 N 是非常大得数字。我们要做的是将它分解成两个指数 p,q,进而求得 φ,再根据公式求得私钥指数,最后将密文转换成明文。

    如何将大整数 N 分解呢?
    1、当 N 的长度较小时,采用爆破
    2、当 N 满足因数p、q相差较小或相差很大时,可以采用离线工具yafu来分解
    3、当 N 的位数过大时,且不满足上述条件,可以用在线网站 factordb。该网站类似于彩虹表,将已被分解的大数结果存储起来,只需要输入查询即可。

    逆元

    逆元是什么?为什么突然讨论逆元?

    还记得上面求解私钥指数d的公式吗?

    e*d mod φ=1

    这个公式也可以写成

    e*d ≡ 1(mod φ)

    定义

    如果一个线性同余方程 ax ≡ 1(mod b),则 x 称为 a mod b 的逆元,记作a-1 。一个数有逆元的充分必要条件是gcd(a,b)=1,此时逆元唯一存在 。

    此处为什么讨论逆元呢?其一,RSA中有逆元的概念;其二,中国剩余定理(CRT)可与 RSA 算法结合来进行加解密,CRT又逃不开逆元的概念,所以就说了。逆元也是数论中一个十分重要的概念,当我们要求 (a / b) mod p的值,且a很大,大到会溢出;或者说b很大,达到会爆精度。无法直接求得a/b的值时,我们就要用到乘法逆元。

    所以上述求解私钥指数d,可以说 e 的逆元是 d mod φ

    如何求解

    费马小定理

    如果 p 是一个质数,而整数 a 不是 p 的倍数,则

    a p−1 ≡ 1 (mod p)

    可得

    a * a p−2 ≡ 1 (mod p)

    所以 a 的逆元即为 a p-2 (mod p)

    之后利用快速幂求解

    typedef long long ll;
    ll mod = 1e9 + 7;
    ll quick_pow(ll base,ll idx){
        ll ans = 1;
        while(idx){
            if(idx & 1){
                ans *= base;
                ans %= mod;
            }
            base *= base;
            base %= mod;
            idx >>= 1;
        }
        return ans;
    }
    
    ll inv(ll a){
        return quick_pow(a,mod-2);
    }
    

    扩展欧几里得

    逆元的含义决定了ax ≡ 1(mod b)等价于ax = kb+1

    void exgcd(int a, int b, int& x, int& y) {
      if (b == 0) {
        x = 1, y = 0;
        return;
      }
      exgcd(b, a % b, y, x);
      y -= a / b * x;
    }
    

    中国剩余定理(CRT)加速RSA算法

    CRT简介

    网上介绍很多,具体可以参考中国剩余定理(孙子定理)

    降N

    前面多次讨论过了,RSA的难点就在于对于大整数 N 的分解。有没有啥方法能简化这个过程呢?

    有,就是上述的中国剩余定理。由中国剩余定理可知,设 p 和 q 是互相独立的大素数,n 为 p*q,对于任意 (m1, m2),且 0<=m1< p,0<=m2< q
    必然存在一个唯一的m ,0<=m< n,使得

    m1 = m mod p
    m2 = m mod q

    换句话说,给定一个(m1,m2),其满足上述等式的m必定唯一存在。所以解密RSA 的流程 m = c d mod n,可以分解为

    m1 = c d mod p
    m2 = c d mod q

    然后再计算m

    但是等式 c d mod p 或者 c d mod q ,模数虽然从n降为p或q了,但是私钥指数指数d还是较大,运算还是比较消耗性能。所以我们还需要降低指数。

    降d

    仔细看等式 c d mod p

    令d = k(p-1) + r 则 c d mod p
    = c k(p-1)+r mod p
    = c r * c k(p-1) mod p
    因为 c (p-1) mod p = 1 (欧拉定理)
    = c r mod p

    r 是 d 除 p-1 的余数,即 r = d mod (p-1) 所以 c d mod p 可以降阶为 c d mod p-1 mod p,同理,c d mod q可以降阶为 c d mod q-1 mod q。

    可令

    dp = d mod p-1
    dq = d mod q-1

    这样 m1 和 m2 就降为

    m1 = c dp mod p
    m2 = c dq mod q

    解密

    模数都降的差不多了。想要求解明文,除了上述的 p、q、d、dp、dq,我们还需要 q 对 p 的逆元

    qinv = q -1 mod p

    结合上述的公式,我们得到最终的明文公式

    h = qinv(m1−m2) mod p
    m = m2+hq mod p∗q

    展开全文
  • 一、加密算法 1.常见的加密算法 (1)2021年下半年软考上午真题8 (2)2021年上半年软考上午真题9 2.加密技术的应用 3.网络安全协议分层 (1)2021年上半年软考上午真题7 (2)2021年上半年软考上午真题11 ...
  • 加密算法及应用

    2022-05-11 10:01:18
    加密算法及应用
  • 本文实例讲述了java实现的RSA加密算法。分享给大家供大家参考,具体如下:一、什么是非对称加密1、加密的密钥与加密的密钥不相同,这样的加密算法称之为非对称加密2、密钥分为:公钥,私钥公钥:可以对外给任何人的...
  • 对称加密算法 对称加密算法加密和解密使用的是同一个密钥。常用的对称加密算法包括:DES、3DES、AES、RC4、RC5、RC6。 非对称加密算法 指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密...
  • 加密算法科普

    2021-03-04 16:30:15
    加密算法科普: 加密一般分为:对称加密(Symmetric Key Encryption)和非对称加密(Asymmetric Key Encryption)。 常见的对称加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6 和 AES。 常见的非对称加密...
  • 实验三:AES加密算法

    2018-04-13 23:10:29
    1、假设有128比特的AES密钥,它的十六进制表示为:2B7E151628AED2A6ABF7158809CF4F3C,以此为种子... 2、使用上述密钥,在10轮AES下计算下列明文(以十六进制表示)的加密结果: 3243F6A8885A308D313198A2E0370734。
  • 不安全的加密算法有哪几种

    千次阅读 2020-12-20 21:51:41
    不安全的加密算法有以下几种:1、DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。2、3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。3、AES...
  • RSA加密算法是最常用的非对称加密算法(公开加密算法)。(这里的RSA是三位科学家的姓氏开头字母) 非对称加密算法分为公钥和私钥。使用私钥加密明文,只能用公钥解密;使用公钥加密,只能用私钥解密。 2.RSA算法...
  • 常用的三种非对称加密算法

    千次阅读 2020-08-29 11:45:37
    RSA(RSA algorithm):由RSA公司发明,是一个支持变长密钥的公开密钥算法,需要加密的文件块的长度也是可变的,非对称加密算法。 DSA(Digital Signature Algorithm):数字签名算法,是一种标准的DSS(数字签名...
  • 哈希加密算法种类

    千次阅读 2020-05-19 13:50:45
    MD5哈希加密算法 MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致。是计算机广泛使用的散列算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。 将数据(如汉字)...
  • SSL证书常用的加密算法有哪些

    千次阅读 2021-05-06 11:37:14
    我们今天就来简单介绍一下SSL证书的加密算法。 1,RSA RSA作为一种国际通用算法,是建立在大整数因子分解的假设基础上的。假定没有整数分解的有效算法,则认为RSA密文的完全解密是不可行的。用户创建并发布 RSA 的...
  • 密码学专题 对称加密算法

    千次阅读 2021-11-16 18:02:06
    一般来说,使用OpenSSL对称加密算法有两种方式,一种是使用API函数的方式,一种是使用OpenSSL提供的对称加密算法指令方式。本书将介绍对称加密算法的指令方式 OpenSSL的对称加密算法指令主要用来对数据进行加密和...
  • 常见加密算法有哪些?是否对称?

    千次阅读 2020-01-06 09:28:04
    常用的对称加密算法:DES、AES、3DES、RC2、RC4 常用的非对称加密算法:RSA、DSA、ECC 单向散列函数的加密算法:MD5、SHA 【Java面试题与答案】整理推荐 基础与语法 集合 网络编程 并发编程 Web 安全 ...
  • 常见的几种数据加密算法

    千次阅读 2020-12-06 08:40:45
    常见的几种数据加密算法
  • 常见的几种安全加密算法

    千次阅读 2017-11-17 10:58:12
    本文整理了常见的安全算法,包括MD5、SHA、DES、AES、RSA等,并写了完整的工具类(Java 版),工具类包含测试,大家可以放心使用。一、数字摘要算法 数字摘要也称为消息摘要,它是一个唯一对应一个消息或文本的固定...
  • 常见的不可逆加密算法有MD5,HMAC,SHA1、SHA-224、SHA-256、SHA-384,和SHA-512,其中SHA-224、SHA-256、SHA-384,和SHA-512我们可以统称为SHA2加密算法,SHA加密算法的安全性要比MD5更高,而SHA2加密算法比SHA1的...
  • 2:同态加密算法原理3:标准化进展4: 主流同态加密算法原理4.1(1)乘法同态加密算法 1:什么是同态加密? 同态加密(Homomorphic Encryption, HE) 是指满足密文同态运算性质的加密算法,即数据经过同态加密之后,...
  • RC4 加密算法

    千次阅读 2021-03-01 14:15:59
    RC4 于 1987 年提出,和 DES 算法一样,是一种对称加密算法。但不同于 DES 的是,RC4 不是对明文进行分组处理,而是以字节流的方式依次加密明文中的每一个字节,解密的时候也是依次对密文中的每一个字节进行解密。 ...
  • 加密算法(DES,AES,RSA,ECC,MD5,SHA1)简介

    千次阅读 2020-11-03 21:55:17
    加密算法(DES,AES,RSA,MD5,SHA1)简介一、对称性加密算法二、非对称算法三、散列算法四、算法举例1、对称性加密算法有:AES、DES、3DES1.1、DES(Data Encryption Standard)1.2、3DES(Triple DES)1.3、 AES...
  • 常见非对称加密算法

    万次阅读 2019-04-10 15:14:35
    加密技术的优点加密一计算量下,速度快。缺点是,加密方和解密方必须协商好秘钥,且保证秘钥安全,如果一方泄露了秘钥整个通信就会被破解,加密信息就不再安全了。 和对称加密技术只使用一个秘钥不同,非对称机密...
  • [导读] 为了加强无线网络的安全性,增加被破解的难度,局域网/城域网标准委员会提出了新的无线网络加密算法CCMP。详细说明该算法加密解密的实现过程,并给出相应代码。 无线网络产品因其灵活、便捷、无线等...
  • 加密算法应用之密码保护

    千次阅读 2019-05-10 14:44:29
    目前,各企、事业单位和国家机关纷纷建立了自己的信息系统,并且各信息系统的规模在不断扩大,地位和作用也越来越突出,安全问题也就... 本文以用户登录模块为应用场景,从加密、传输、存储三方面,介绍如何对用户的密...
  • 加密算法的分类

    千次阅读 2018-06-21 15:33:48
    加密算法分为:一、可逆加密,二、不可逆加密。 一、可逆加密  可逆加密又分为:1.对称加密、2.非对称加密  1.对称加密  加密和解密共用一个密钥。常用的算法有DES、3DES、AES。  2.非对称加密  非对称...
  • 安全加密算法

    2018-02-07 14:55:15
    安全的哈希:SHA256、 SHA512 不安全的哈希:MD5、 SHA1 安全的加密:3DES、 AES 不安全的加密:DES
  • 以下加密算法中,适合对大量的明文消息进行加密传输的是____。 A RSA B SHA-1 C MD5 D RC5 2. 理论 加密与摘要算法常见的分3类:对称加密算法、非对称加密算法、消息摘要算法。 2.1 对称加密算法 只有一个密钥,加...
  • 椭圆曲线加密算法

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

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,627
精华内容 7,450
热门标签
关键字:

下列不是加密算法的是