加密和解密使用的是两个不同的秘钥,这种算法叫做非对称加密。非对称加密又称为公钥加密,RSA只是公钥加密的一种。
现实生活中有签名,互联网中也存在签名。签名的作用有两个,一个是身份验证,一个是数据完整性验证。数字签名通过摘要算法来确保接收到的数据没有被篡改,再通过签名者的私钥加密,只能使用对应的公钥解密,以此来保证身份的一致性。
数字证书是将个人信息和数字签名放到一起,经由CA机构的私钥加密之后生成。当然,不经过CA机构,由自己完成签名的证书称为自签名证书。CA机构作为互联网密码体系中的基础机构,拥有相当高级的安全防范能力,所有的证书体系中的基本假设或者前提就是CA机构的私钥不被窃取,一旦 CA J机构出事,整个信息链将不再安全。
CA证书的生成过程如下:
证书参与信息传递完成加密和解密的过程如下:
互质关系:互质是公约数只有1的两个整数,1和1互质,13和13就不互质了。
欧拉函数:表示任意给定正整数 n,在小于等于n的正整数之中,有多少个与 n 构成互质关系,其表达式为:
其中,若P为质数,则其表达式可以简写为:
情况一:φ(1)=1
1和任何数都互质,所以φ(1)=1;
情况二:n 是质数, φ(n)=n-1
因为 n 是质数,所以和小于自己的所有数都是互质关系,所以φ(n)=n-1;
情况三:如果 n 是质数的某一个次方,即 n = p^k ( p 为质数,k 为大于等于1的整数),则φ(n)=(p-1)p^(k-1)
因为 p 为质数,所以除了 p 的倍数之外,小于 n 的所有数都是 n 的质数;
情况四:如果 n 可以分解成两个互质的整数之积,n = p1 × p2,则φ(n) = φ(p1p2) = φ(p1)φ(p2)
情况五:基于情况四,如果 p1 和 p2 都是质数,且 n=p1 × p2,则φ(n) = φ(p1p2) = φ(p1)φ(p2)=(p1-1)(p2-1)
而 RSA 算法的基本原理就是欧拉函数中的第五种情况,即: φ(n)=(p1-1)(p2-1);
如果两个正整数 a 和 n 互质,那么一定可以找到整数 b,使得 ab-1 被 n 整除,或者说ab被n除的余数是1。这时,b就叫做a的“模反元素”。欧拉定理可以用来证明模反元素必然存在。
可以看到,a的 φ(n)-1 次方,就是a对模数n的模反元素。
n=p x q = 3233,3233写成二进制是110010100001,一共有12位,所以这个密钥就是12位。
在实际使用中,一般场景下选择1024位长度的数字,更高安全要求的场景下,选择2048位的数字,这里作为演示,选取p=61和q=53;
因为n、p、q都为质数,所以φ(n) = (p-1)(q-1)=60×52= 3120
注意,这里是和φ(n) 互互质而不是n!假设选择的值是17,即 e=17;
模反元素就是指有一个整数 d,可以使得 ed 被 φ(n) 除的余数为1。表示为:(ed-1)=φ(n) y --> 17d=3120y+1,算出一组解为(2753,15),即 d=2753,y=-15,也就是(17 2753-1)/3120=15。
注意,这里不能选择3119,否则公私钥相同??
公钥:(n,e)=(3233,2753)
私钥:(n,d)=(3233,17)
公钥是公开的,也就是说m=p*q=3233是公开的,那么怎么求e被?e是通过模反函数求得,17d=3120y+1,e是公开的等于17,这时候想要求d就要知道3120,也就是φ(n),也就是φ(3233),说白了,3233是公开的,你能对3233进行因数分解,你就能知道d,也就能破解私钥。
正常情况下,3233我们可以因数分解为61*53,但是对于很大的数字,人类只能通过枚举的方法来因数分解,所以RSA安全性的本质就是:对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。
人类已经分解的最大整数是:
这个人类已经分解的最大整数为232个十进制位,768个二进制位,比它更大的因数分解,还没有被报道过,因此目前被破解的最长RSA密钥就是768位。所以实际使用中的1024位秘钥基本安全,2048位秘钥绝对安全。
网上有个段子:
已经得出公私钥的组成:
公钥:(n,e)=(3233,2753)
私钥:(n,d)=(3233,17)
加密的过程就是
解密过程如下:
其中 m 是要被加密的数字,c 是加密之后输出的结果,且 m < n ,其中解密过程一定成立可以证明的,这里省略证明过程。
总而言之,RSA的加密就是使用模反函数对数字进行加密和求解过程,在实际使用中因为 m < n必须成立,所以就有两种加密方法:
对称加密存在虽然快速,但是存在致命的缺点就是秘钥需要传递。非对称加密虽然不需要传递秘钥就可以完成加密和解密,但是其致命缺点是速度不够快,不能用于高频率,高容量的加密场景。所以才有了两者的互补关系,在传递对称加密的秘钥时采用非对称加密,完成秘钥传送之后采用对称加密,如此就可以完美互补。
② 从哪开始学习软件的加密与解密
你说的是软件破解吧?
呵呵 第一要懂汇编 第二就是要懂算法!
一定要搞明白算法是怎么样的 前提必须要脱壳,这才是技术
③ 求密码学解密算法
关于计算机信息加密与解密技术,现在有很多这样的教材可供参考。例如:《计算机密码编码学与网络安全》,因为计算机信息的加密算法和解密算法必须是配对使用的,当初使用的是哪一种算法对信息进行的加密,那么在对经过加密的信息进行解密时,也必须要使用相应的解密算法才行,并不是通用的。所以说,如果要学习关于这方面的知识的话,就必须要专门学习关于计算机信息加密与解密的课程,该课程中会讲到多种的计算机信息加密算法和解密算法。
④ 密码学是怎么样通过加密和解密的,
你是想知道密码学怎样加解密还是?
近代密码学:编码密码学主要致力于信息加密、信息认证、数字签名和密钥管理方面的研究。信息加密的目的在于将可读信息转变为无法识别的内容,使得截获这些信息的人无法阅读,同时信息的接收人能够验证接收到的信息是否被敌方篡改或替换过;数字签名就是信息的接收人能够确定接收到的信息是否确实是由所希望的发信人发出的;密钥管理是信息加密中最难的部分,因为信息加密的安全性在于密钥。历史上,各国军事情报机构在猎取别国的密钥管理方法上要比破译加密算法成功得多。
密码分析学与编码学的方法不同,它不依赖数学逻辑的不变真理,必须凭经验,依赖客观世界觉察得到的事实。因而,密码分析更需要发挥人们的聪明才智,更具有挑战性。
现代密码学是一门迅速发展的应用科学。随着因特网的迅速普及,人们依靠它传送大量的信息,但是这些信息在网络上的传输都是公开的。因此,对于关系到个人利益的信息必须经过加密之后才可以在网上传送,这将离不开现代密码技术。
1976年Diffie和Hellman在《密码新方向》中提出了着名的D-H密钥交换协议,标志着公钥密码体制的出现。 Diffie和Hellman第一次提出了不基于秘密信道的密钥 分发,这就是D-H协议的重大意义所在。
PKI(Public Key Infrastructure)是一个用公钥概念与技术来实施和提供安全服务的具有普适性的安全基础设施。PKI公钥基础设施的主要任务是在开放环境中为开放性业务提供数字签名服务。
要查看具体的某个密码体系的知识可参考《密码学概论》。
⑤ 密码学知识精粹
① 替换法
替换法很好理解,就是用固定的信息将原文替换成无法直接阅读的密文信息。例如将 b 替换成 w ,e 替换成p ,这样bee 单词就变换成了wpp,不知道替换规则的人就无法阅读出原文的含义。
替换法有单表替换和多表替换两种形式。
② 移位法
移位法就是将原文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后得出密文,典型的移位法应用有 “ 恺撒密码 ”。
例如约定好向后移动2位(abcde - cdefg),这样 bee 单词就变换成了dgg。
古典密码破解方式--频率分析法
古典密码的安全性受到了威胁,外加使用便利性较低,到了工业化时代,近现代密码被广泛应用。
恩尼格玛机
恩尼格玛机是二战时期纳粹德国使用的加密机器,其使用的加密方式本质上还是移位和替代,后被英国破译,参与破译的人员有被称为计算机科学之父、人工智能之父的图灵。
① 散列函数加密(消息摘要,数字摘要)
散列函数,也见杂凑函数、摘要函数或哈希函数,可将任意长度的消息经过运算,变成固定长度数值,常见的有MD5、SHA-1、SHA256,多应用在文件校验,数字签名中。
MD5 可以将任意长度的原文生成一个128位(16字节)的哈希值
SHA-1可以将任意长度的原文生成一个160位(20字节)的哈希值
特点:消息摘要(Message Digest)又称为数字摘要(Digital Digest)
它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生
使用数字摘要生成的值是不可以篡改的,为了保证文件或者值的安全
MD5算法 : 摘要结果16个字节, 转16进制后32个字节
SHA1算法 : 摘要结果20个字节, 转16进制后40个字节
SHA256算法 : 摘要结果32个字节, 转16进制后64个字节
SHA512算法 : 摘要结果64个字节, 转16进制后128个字节
② 对称加密
对称密码应用了相同的加密密钥和解密密钥。对称密码分为:序列密码(流密码),分组密码(块密码)两种。流密码是对信息流中的每一个元素(一个字母或一个比特)作为基本的处理单元进行加密,块密码是先对信息流分块,再对每一块分别加密。
例如原文为1234567890,流加密即先对1进行加密,再对2进行加密,再对3进行加密……最后拼接成密文;块加密先分成不同的块,如1234成块,5678成块,90XX(XX为补位数字)成块,再分别对不同块进行加密,最后拼接成密文。前文提到的古典密码学加密方法,都属于流加密。
示例
我们现在有一个原文3要发送给B
设置密钥为108, 3 * 108 = 324, 将324作为密文发送给B
B拿到密文324后, 使用324/108 = 3 得到原文
常见加密算法
DES : Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。
AES : Advanced Encryption Standard, 高级加密标准 .在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
特点
加密速度快, 可以加密大文件
密文可逆, 一旦密钥文件泄漏, 就会导致数据暴露
加密后编码表找不到对应字符, 出现乱码,故一般结合Base64使用
加密模式
ECB : Electronic codebook, 电子密码本. 需要加密的消息按照块密码的块大小被分为数个块,并对每个块进行独立加密
优点 : 可以并行处理数据
缺点 : 同样的原文生成同样的密文, 不能很好的保护数据
CBC : Cipher-block chaining, 密码块链接. 每个明文块先与前一个密文块进行异或后,再进行加密。在这种方法中,每个密文块都依赖于它前面的所有明文块
优点 : 同样的原文生成的密文不一样
缺点 : 串行处理数据
填充模式:当需要按块处理的数据, 数据长度不符合块处理需求时, 按照一定的方法填充满块长的规则
NoPadding不填充.
对应的AES加密类似,但是如果使用的是AES加密,那么密钥必须是16个字节。
加密模式和填充模式:
AES/CBC/NoPadding (128)
AES/CBC/PKCS5Padding (128)
AES/ECB/NoPadding (128)
AES/ECB/PKCS5Padding (128)
DES/CBC/NoPadding (56)
DES/CBC/PKCS5Padding (56)
DES/ECB/NoPadding (56)
DES/ECB/PKCS5Padding (56)
DESede/CBC/NoPadding (168)
DESede/CBC/PKCS5Padding (168)
DESede/ECB/NoPadding (168)
DESede/ECB/PKCS5Padding (168)
RSA/ECB/PKCS1Padding (1024, 2048)
RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)
RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048)
PS: Base64是网络上最常见的用于传输8Bit字节码的可读性编码算法之一
可读性编码算法不是为了保护数据的安全性,而是为了可读性
可读性编码不改变信息内容,只改变信息内容的表现形式
所谓Base64,即是说在编码过程中使用了64种字符:大写A到Z、小写a到z、数字0到9、“+”和“/”
Base64 算法原理:base64 是 3个字节为一组,一个字节 8位,一共 就是24位 ,然后,把3个字节转成4组,每组6位(3 * 8 = 4 * 6 = 24),每组缺少的2位会在高位进行补0 ,这样做的好处在于 base取的是后面6位而去掉高2位 ,那么base64的取值就可以控制在0-63位了,所以就叫base64,111 111 = 32 + 16 + 8 + 4 + 2 + 1 =
toString()与new String ()用法区别
③ 非对称加密
非对称密码有两支密钥,公钥(publickey)和私钥(privatekey),加密和解密运算使用的密钥不同。用公钥对原文进行加密后,需要由私钥进行解密;用私钥对原文进行加密后(此时一般称为签名),需要由公钥进行解密(此时一般称为验签)。公钥可以公开的,大家使用公钥对信息进行加密,再发送给私钥的持有者,私钥持有者使用私钥对信息进行解密,获得信息原文。因为私钥只有单一人持有,因此不用担心被他人解密获取信息原文。
特点:
加密和解密使用不同的密钥
如果使用私钥加密, 只能使用公钥解密
如果使用公钥加密, 只能使用私钥解密
处理数据的速度较慢, 因为安全级别高
常见算法:RSA,ECC
数字签名
数字签名的主要作用就是保证了数据的有效性(验证是谁发的)和完整性(证明信息没有被篡改),是非对称加密和消息摘要的应用
keytool工具使用
keytool工具路径:C:\Program Files\Java\jre1.8.0_91\bin
--- END
⑥ word文档加密了怎么解密啊
最安全的方法就是询问遗留文档的人密码是什么,这样可以避免很多麻烦;另外文档对你很重要的话不建议使用代码等方法,一不小心操作错误极容易损坏文档,那就不值当了。最后的底线就是使用一款比较好的word密码破解工具来找回密码,不用懂代码,门外汉也可以轻松搞定。
这里以Advanced Office Password Recovery破解word密码说明找回密码的步骤:
虽然Advanced Office Password Recovery软件十分专业,但是使用起来还是十分方便的,如果不是十分复杂的密码,只需要用户打开要破解密码的Word文档,“准备攻击”就可以恢复密码。如果密码较为复杂,准备攻击破解失败,用户需要选择Word密码破解工具“恢复”标签页中其他具有更强攻击力的攻击类型。等待Advanced Office Password Recovery的破解攻击运行5秒左右便弹出了以下结果对话框:
上图红框中内容就是AOPR软件破解的Word密码1991,若是破解长且复杂的密码可能会需要耗费较长的时间,用户需要学习更多Word密码破解工具的破解技巧请参考教程:http://www.passwordrecovery.cn/kuaisu-pojie.html。
⑦ 密码学基础(二):对称加密
加密和解密使用相同的秘钥称为对称加密。
DES:已经淘汰
3DES:相对于DES有所加强,但是仍然存在较大风险
AES:全新的对称加密算法。
特点决定使用场景,对称加密拥有如下特点:
速度快,可用于频率很高的加密场景。
使用同一个秘钥进行加密和解密。
可选按照128、192、256位为一组的加密方式,加密后的输出值为所选分组位数的倍数。密钥的长度不同,推荐加密轮数也不同,加密强度也更强。
例如:
AES加密结果的长度由原字符串长度决定:一个字符为1byte=4bit,一个字符串为n+1byte,因为最后一位为'