rsa

RSA 算法简述

末鹿安然 提交于 2020-03-04 00:36:55
RSA是什么 计算机的加密技术分为对称加密和非对称加密两类。在对称加密中,信息的加解密使用同一秘钥key,其可简化加解密的过程,较为简单,但不足之处在于由于加解密使用同一个key,信息传送双方都要接触这个key,密钥key更容易泄露。 在公开密钥加密即非对称加密中,密钥分为公钥PK(发送方通过PK对数据加密,然后发送给接收方,PK可公开),私钥SK(SK解密方保存,接收方通过SK对密文解密,SK不公开)。RSA公钥密码体制是最具代表性的非对称加密方式。 RSA算法原理 RSA定理:若P和Q是两个相异质数,另有正整数D和E,其中E的值与 (P-1)(Q-1)的值互质,并使得DE%(P-1)(Q-1)=1,有正整数M,且M<PQ,设: C=ME%PQ,B=CD%PQ,则有M=B。 生成公钥和密钥 随意选择两个大的素数P和Q,且P不等于Q 令N=PQ 令T=(P-1)(Q-1) 选择一个整数E,作为一个密钥,使E与T互质(即E与T的最大公约数为1),且E必须小于T 由公式DE%T=1,计算得到D的值,作为另一密钥 将(N,E)作为公钥,(N,D)作为私钥,当然也可互换。 用公钥加密信息 发送方收到公钥(N,E)后,通过公钥对数据进行加密,操作如下: 明文:M 加密:ME%N=C 密文:C 用私钥解密信息 接收方收到密文C后,通过私钥(N,D)进行解密,得到明文M,操作如下: 密文:C

github 使用中遇到的问题

淺唱寂寞╮ 提交于 2020-03-04 00:00:48
在查询一番后得知出现“No such file or directory ”的原因是“.gitconfig"文件里面多了两个斜杠,怎么多出来的我还不清楚。把他删掉就可以了。 "Permission denied (publickey)"的问题是生成的key文件名不对,还有存放的位置也不对 生成key的命令是 ssh-keygen 这样系统默认创建人是这台电脑,可以加些参数比如这样 Ssh-keygen –t rsa –C “yangxing1002@gmai.com” 这样就可以指定特定创建人了 敲完上面的命令后回车,这时候需要键入保存key的文件名 这里必须写成id_rsa 为什么我也不是很清楚。。。 用下面这个命令可以打印一些信息 ssh -v hg@bitbucket.org 我突然想起mac上的公钥是github客户端自己生成的,文件名是github_rsa,原来是文件名不对。。 把win下之前生成的公钥拷贝到了.ssh目录 再来一次,又有报错,其中有一句 Permissions 0644 for '/Users/harry/.ssh/id_rsa' are too open. google的结果 http://www.lpfrx.com/archives/1864/ 原来是权限太高 chmod 0600 ~/.ssh/id_rsa 修改权限为0600后解决一切问题。 来源

centos7部署opensvn

怎甘沉沦 提交于 2020-03-03 19:39:12
OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。和传统 VPN 相比,它的优点是简单易用 OpenVPN允许参与建立VPN的单点使用共享金钥,电子证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库中的SSLv3/TLSv1 协议函式库。OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Windows 2000/XP/Vista上运行,并包含了许多安全性的功能。它并不是一个基于Web的VPN软件,也不与IPsec及其他VPN软件包兼容。 OpenVPN2.0后引入了用户名/口令组合的身份验证方式,它可以省略客户端证书,但是仍有一份服务器证书需要被用作加密。 OpenVPN所有的通信都基于一个单一的IP端口, 默认且推荐使用UDP协议通讯,同时TCP也被支持。OpenVPN连接能通过大多数的代理服务器,并且能够在NAT的环境中很好地工作。服务端具有向客 户端“推送”某些网络配置信息的功能,这些信息包括:IP地址、路由设置等。OpenVPN提供了两种虚拟网络接口:通用Tun/Tap驱动,通过它们, 可以建立三层IP隧道,或者虚拟二层以太网,后者可以传送任何类型的二层以太网络数据。传送的数据可通过LZO算法压缩。在选择协议时候,需要注意2个加密隧道之间的网络状况

ssh免密登录linux服务器

谁说胖子不能爱 提交于 2020-03-03 14:52:54
Ssh 免密登录 sshd 服务 sshd 简介: SSH 密钥为登录 Linux 服务器提供了更好且安全的机制。运行 ssh-keygen 后,将会生成公私密钥对。你可以将公钥放置到任意服务器,从持有私钥的客户端连接到服务器的时,会用它来解锁。两者匹配时,系统无需密码就能解除锁定。 官方 维护文档: https://www.ssh.com/ssh/ 参考 文档: https://www.cnblogs.com/ioveNature/p/7919115.html https://www.cnblogs.com/panblack/p/Secure_ssh_trust_connection.html 一、服务器上创建用户: 在服务器上创建普通用户,为每个人都分配一个自己的用户。 # groupadd dd # useradd -g dd dd1 [root@localhost ~]# passwd dd1 Changing password for user dd1. New password: BAD PASSWORD: The password is shorter than 7 characters Retype new password: passwd: all authentication tokens updated successfully. # 这个密码管理员管理好

python实现RSA加解密

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-03 02:12:53
RSA的算法涉及三个参数,n、e、d。 其中,n是两个大质数p、q的积,n的二进制表示所占用的位数,就是所谓的密钥长度。 e和d是一对相关的值,e可以任意取,但要求e与(p-1)*(q-1)互质;再选择d,要求(d*e)mod((p-1)*(q-1))=1。 (n,e),(n,d)就是密钥对。其中(n,e)为公钥,(n,d)为私钥。 RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^d mod n;B=A^e mod n;(公钥加密体制中,一般用公钥加密,私钥解密) e和d可以互换使用,即: A=B^d mod n;B=A^e mod n; 代码参考如下: #coding -*- utf:8 -*- import math import random #生成素数数组 def prime_array(): arraya = [] for i in range(2,100): #生成前100中的素数,从2开始因为2是最小的素数 x = prime(i,2) #i为素数时返回True,则将x加入arraya数组中;2为测试值 if x: arraya.append(i) return arraya #判断是否为素数 def prime(n, test_divisor): if math.sqrt(n) < test_divisor: return True

错误RSA host key for [ip address] has changed and you have requested strict checking.

倖福魔咒の 提交于 2020-03-03 00:34:15
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the RSA key sent by the remote host is SHA256:v6F5Qchy3Mk6z4syY5a3eSxoQB+0ze1++LA4rQVkRSU. Please contact your system administrator. Add correct host key in /Users/zhangjin/.ssh/known_hosts to get rid of this message.

RSA host key for HOST has changed and you have requested strict checking

£可爱£侵袭症+ 提交于 2020-03-03 00:33:58
RSA host key for HOST has changed and you have requested strict checking If you get this: ————————————- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: POSSIBLE DNS SPOOFING DETECTED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ The RSA host key for HOST has changed, and the key for the corresponding IP address IP is unknown. This could either mean that DNS SPOOFING is happening or the IP address for the host and its host key have changed at the same time. 今天突然发现git连不上服务器了,ssh连接的时候会抱错:Read socket failed: Connection reset by peer. 重新把Windows

RSA共模攻击

梦想的初衷 提交于 2020-03-02 10:53:24
在安恒月赛中碰到一道密码学方向的ctf题 附上源码 from flag import flag from Crypto.Util.number import * p=getPrime(1024) q=getPrime(1024) e=65537 n=p*q m=bytes_to_long(flag) c=pow(m,e,n) print c,e,n e=11187289 n=p*q m=bytes_to_long(flag) c=pow(m,e,n) print c,e,n '''

C#使用SHA1加密类(RSAFromPkcs8)支持1024位和2048位私钥

霸气de小男生 提交于 2020-03-02 01:06:57
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Security.Cryptography; namespace HelloWord.RSA { /// <summary> /// 类名:RSAFromPkcs8 /// 功能:RSA加密、解密、签名、验签 (支持1024位和2048位私钥) /// 详细:该类对Java生成的密钥进行解密和签名以及验签专用类,不需要修改 /// 版本:3.0 /// 日期:2013-07-08 /// 说明: /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。 /// </summary> public sealed class RSAFromPkcs8 { /** * RSA最大解密密文大小 * 注意:这个和密钥长度有关系, 公式= 密钥长度 / 8 */ private const int MAX_DECRYPT_BLOCK = 128; /// <summary> /// 签名 /// </summary> /// <param name="content">待签名字符串</param> /

加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较

末鹿安然 提交于 2020-02-29 17:15:20
转载自:http://www.cnblogs.com/sochishun/p/7028056.html 加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用 加密技术通常分为两大类:"对称式"和"非对称式"。 对称性加密算法: 对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。 非对称算法: 非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用,否则不能打开加密文件。发送双方A,B事先均生成一堆密匙,然后A将自己的公有密匙发送给B,B将自己的公有密匙发送给A,如果A要给B发送消 息,则先需要用B的公有密匙进行消息加密,然后发送给B端,此时B端再用自己的私有密匙进行消息解密,B向A发送消息时为同样的道理。 散列算法: 散列算法,又称哈希函数,是一种单向加密算法。在信息安全技术中,经常需要验证消息的完整性,散列(Hash)函数提供了这一服务,它对不同长度的输入消息,产生固定长度的输出。这个固定长度的输出称为原输入消息的"散列"或"消息摘要"(Message digest)。散列算法不算加密算法,因为其结果是不可逆的,既然是不可逆的,那么当然不是用来加密的,而是签名。 对称性加密算法有