第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

RSA加密解密算法

標(biāo)簽:
Android
加密与解密技术核心思想
	认知
		密码锁,古墓
		天王盖地虎,。。。。。
		美国的摩尔斯在1844年发明的,故也被叫做摩尔斯电码。
		银行,手机,游戏
	安全哈希算法(Secure Hash Algorithm)
SHA-1
		将消息摘要转换成位字符串
			我们以“abc”字符串来说明问题,因为'a'=97, 'b'=98, 'c'=99,所以将其转换为位串后为:
			01100001 01100010 01100011
		对转换后的位字符串进行补位操作
			Sha-1算法标准规定,必须对消息摘要进行补位操作,即将输入的数据进行填充,使得数据长度对512求余的结果为448
,填充比特位的最高位补一个1,其余的位补0,如果在补位之前已经满足对512取模余数为448,也要进行补位,在其后补一位1即可。
总之,补位是至少补一位,最多补512位,我们依然以“abc”为例,其补位过程如下:
			初始的信息摘要:01100001 01100010 01100011
			第一步补位:    01100001 01100010 01100011 1
			..... ......
			补位最后一位:  01100001 01100010 01100011 10.......0(后面补了423个0)
			而后我们将补位操作后的信息摘要转换为十六进制,如下所示:
			61626380 00000000 00000000 00000000
			00000000 00000000 00000000 00000000
			00000000 00000000 00000000 00000000
			00000000 00000000
		附加长度值
			在信息摘要后面附加64bit的信息,用来表示原始信息摘要的长度,在这步操作之后,信息报文便是512bit的倍数。通常来说用一个64位的数据表示原始消息的长度,如果消息长度不大于2^64,那么前32bit就为0,在进行附加长度值操作后,其“abc”数据报文即变成如下形式:
			61626380 00000000 00000000 00000000
			00000000 00000000 00000000 00000000
			00000000 00000000 00000000 00000000
			00000000 00000000 00000000 00000018
			因为“abc”占3个字节,即24位 ,换算为十六进制即为0x18。
		初始化缓存
			一个160位MD缓冲区用以保存中间和最终散列函数的结果。它可以表示为5个32位的寄存器(H0,H1,H2,H3,H4)。初始化为:
			H0 = 0x67452301
			H1 = 0xEFCDAB89
			H2 = 0x98BADCFE
			H3 = 0x10325476
			H4 = 0xC3D2E1F0
			大端存储模式:高位数据放在低地址,低位数据放在高地址
		计算消息摘要
			S函数
				循环左移操作符Sn(x),x是一个字,也就是32bit大小的变量,n是一个整数且0<=n<=32。Sn(X) = (X<<n)OR(X>>32-n)
			常量字k(0)、k(1)、...k(79)
				Kt = 0x5A827999  (0 <= t <= 19)
				Kt = 0x6ED9EBA1 (20 <= t <= 39)
				Kt = 0x8F1BBCDC (40 <= t <= 59)
				Kt = 0xCA62C1D6 (60 <= t <= 79)
			非线性函数
				所要用到的一系列函数
					Ft(b,c,d)  ((b&c)|((~b)&d))    (0 <= t <= 19)
					Ft(b,c,d) (b^c^d)             (20 <= t <= 39)
					Ft(b,c,d) ((b&c)|(b&d)|(c&d))  (40 <= t <= 59)
					Ft(b,c,d) (b^c^d)               (60 <= t <= 79)
				根据结果无法反推
			开始计算摘要
				计算需要一个缓冲区,由5个32位的字组成,还需要一个80个32位字的缓冲区。第一个5个字的缓冲区被标识为A,B,C,D,E。80个字的缓冲区被标识为W0, W1,..., W79
				另外还需要一个一个字的TEMP缓冲区。
				为了产生消息摘要,在补好位的数据中前16个字的数据块M1, M2,..., Mn
				会依次进行处理,处理每个数据块Mi 包含80个步骤。
				现在开始处理M1, M2, ... , Mn。为了处理 Mi,需要进行下面的步骤
				(1). 将 Mi 分成 16 个字 W0, W1, ... , W15,  W0 是最左边的字
				(2). 对于 t = 16 到 79 令 Wt = S1(Wt-3 XOR Wt-8 XOR Wt- 14 XOR Wt-16).
				(3). 令 A = H0, B = H1, C = H2, D = H3, E = H4.
				(4) 对于 t = 0 到 79,执行下面的循环
				TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt;
				E = D; D = C; C = S30(B); B = A; A = TEMP;
				(5). 令 H0 = H0 + A, H1 = H1 + B, H2 = H2 + C, H3 = H3 + D, H4 = H4 + E.
				在处理完所有的 Mn, 后,消息摘要是一个160位的字符串,以下面的顺序标识
				H0 H1 H2 H3 H4.
		同类算法
			SHA1  SHA224  SHA256  SHA384  SHA512 
MD5  HmacMD5
HmacSHA1  HmacSHA224  HmacSHA256  HmacSHA384  HmacSHA512   PBKDF2
		注意:
			只要是哈希函数,就存在碰撞
			所谓碰撞的意思是,有两个不同的数据,他们的哈希值相同(SHA1值相同)
	DES
数据加密标准
		同类算法
			AES  DES  RC4  Rabbit  TripleDes
	Base64
		一个bit换成一个字符
	RSA公钥加密算法
		公
		RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年7月首次在美国公布,当时他们三人都在麻省理工学院工作实习。RSA就是他们三人姓氏开头字母拼在一起组成的。
		RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。
		今天只有短的RSA钥匙才可能被强力方式解破。
到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。
只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。
但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战和质疑。
		算法思想
			1970年以前,密码学一直使用对称密钥,
如果一个人需要和多个人分享信息,比如银行需要存放所有人的密码,来进行信息交换,必然需要管理所有的密钥
能否有一种更简单的方法呢?
			1970年一个英国工程师和数学家James H.Ellis 在研究一个非秘密的加密想法,基于一个简单又聪明的想法,上锁和解锁是相反的操作
他可以把锁打开,交给对方后,由对方上好锁,再还给他,由他自己开锁
这样他可以大量发出他的信息,而只需要保留单个钥匙
当然他给出了工作原理,但不知如何用数学方法解决 
				
			被另一个数学家和密码专家Cocks发现
他需要一个特殊的单向函数,正推容易,求逆很难
				
					
				
					
						
							
				为了找到合适的N需要另一个函数,殴几里德证明了一个公式
					求素数的因子分解589=19*31,计算很难,如果是个1000位数呢?
					殴几里德证明了一个重要的函数phi(n),用于找到整数的可分解性
						例如:phi(8)=4       1,2,3,4,5,6,7,8 和8互质的数有4个:1,3,5,7
						如果n素数:phi(n)=n-1     phi(7)=6     phi(11)=10
						如果 phi(a*b)=phi(a)*phi(b)   phi(3*5)=phi(3)*phi(5)=8
则    N=p*q           N=2*4=8
如果 phi(N)=phi(p)*phi(q)
则    phi(N)=(p-1)*(q-1)
这个样我们可以很容易得到一个素数的phi值
例 77=11*7    phi(77)=phi(11-1)*phi(7-1)=10*6=60
					如何关联N和指数的关系
						殴拉定理
							phi函数和模的指数之间的关系
								欧拉定理表明,若n,a为正整数,且n,a互质
a^phi(n)==1 mod n
								首先看一个基本的例子。令a = 3,n = 5,这两个数是互素的。比5小的正整数中与5互素的数有1、2、3和4,所以φ(5)=4(详情见[欧拉函数])。计算:a^{φ(n)} = 3^4 =81,而81= 80 + 1 Ξ 1 (mod 5)。与定理结果相符。
								推论
									1^k==1
m^(k*phi(n))==1 mod n
(1^k)*m=1*m
左右都乘m
m*m^(k*phi(n))==1*m mod n
m^(k*phi(n)+1)==m mod n
对比
m^(k*phi(n)+1)==m mod n
m^(e*d)==m mod n
e*d=k*phi(n)+1
d=(k*phi(n)+1)/e
									结论
										
		实现
			1.公钥生成
				选择2个素数P和Q
p=53   q=59
n=P*Q=53*59=3127
				需要一个小的指数e
1.n不能被e整除
2.e介于1与phi(n)之间
         1<e<phi(n)
         例如 e=3
				公钥由n和e组成
			2.私钥生成
				phi(n)=(P-1)*(Q-1)=52*58=3016
				私钥d=(2*(phi(n))+1)/e=(2*3016+1)/3=2011
			3.使用公钥加密数据
				把明文的每一位转换成数字 如HI=89
				密文c=明文^e mod n
89^3%3127=1394
			4.使用私钥解密数据
				明文=c^d mod n
1394^2011 mod 3127=89
			
			事实上,如果N足够大,需要几千年才能破解
这个加密算法在发布后立即被列入机密
直到1977年重新被人发明(Ron Rivest,Adi Shamir,Leonard Adleman),并命名为RSA算法

原文链接:http://www.apkbus.com/blog-340477-76755.html

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消