RSA KEY获取失败怎么办

RSA KEY获取失败怎么办,第1张

使用下例中ssky-keygen和ssh-copy-id,仅需通过3个步骤的简单设置而无需输入密码就能登录远程Linux主机。

ssh-keygen 创建公钥密钥

ssh-copy-id 把本地主机的公钥复制到远程主机的authorized_keys文件上。

ssh-copy-id 也会给远程主机的用户主目录(home)和~/ssh, 和~/ssh/authorized_keys设置合适的权限 。

步骤1: 用 ssh-key-gen 在本地主机上创建公钥和密钥

ligh@local-host$ ssh-keygen -t rsa

Enter file in which to save the key (/home/jsmith/ssh/id_rsa):[Enter key]

Enter passphrase (empty for no passphrase): [Press enter key]

Enter same passphrase again: [Pess enter key]

Your identification has been saved in /home/jsmith/ssh/id_rsa

Your public key has been saved in /home/jsmith/ssh/id_rsapub

The key fingerprint is: 33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9

ligh@local-host

步骤2: 用 ssh-copy-id 把公钥复制到远程主机上

ligh@local-host$ ssh-copy-id -i ~/ssh/id_rsapub root@19216803

ligh@remote-host‘s password:

Now try logging into the machine, with ―ssh remote-host‘‖, and check in:

ssh/authorized_keys to make sure we haven‘t added extra keys that you weren‘t expecting

[注: ssh-copy-id 把密钥追加到远程主机的 ssh/authorized_key 上]

步骤3: 直接登录远程主机

ligh@local-host$ ssh remote-host

Last login: Sun Nov 16 17:22:33 2008 from 19216812

[注: SSH 不会询问密码]

ligh@remote-host$

[注: 你现在已经登录到了远程主机上

RSA公钥密码

RSA公钥密码是1977年由Ron Rivest、Adi Shamirh和LenAdleman在MIT(美国麻省理工学院〉开发的,1978年首次公布[RIVE78]。它是目前最有影响的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击。目前它已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想分解它们的乘积却极端困难,因此可以将乘积公开作为加密密钥。

RSA的算法结构相当简单,整个算法可以描述如下:

(1)选取两个大素数p和q(保密);

(2)计算n=pq(公开),γ=(p一1〉(q-1)(保密);

(3)随机选取整数e(公开,加密密钥),使得ed(ear)=1

(4)计算d(保密,私人密钥),使得ed≡1(mod r),即d=e-1(mod r);

(5)加密:c=me mod n

(6)解密:m=cd mod n。

利用RSA对被加密的信息m (长度小于log2n的整数)进行加密得到相应的密文c=me mod n;解密算法则是计算m=cd modn RSA的优点是不需要密钥分配,但缺点是速度慢。RSA公钥密码 RSA 公钥 密码

crypto API支持常用的rsa、aes加解密,这边介绍rsa的应用。

windowcrypto需要chrome 37版本,ie 11,safari 11才支持全部API而基本的加解密在safari 7就可以。

cryptosubtlegenerateKey(algorithm, extractable, keyUsages) ,其中:

1 algorithm 参数根据不同算法填入对应的参数对,rsa需要填入 RsaHashedKeyGenParams 对象包含有:

2 extractable 一般是true,表示是否允许以文本的方式导出key

3 keyUsages 是一个数组,里面可选 encrypt decrypt sign

函数结果返回一个promise对象,如果是对称加密会得到一个密钥 CryptoKey 类型,这边rsa会得到一个密钥对 CryptoKeyPair ,它有2个 CryptoKey 成员, privateKey publicKey ,我们导出密钥为文本或者加解密都将通过这2个成员对象。

windowcryptosubtleexportKey(format, key) ,其中:

1 format 可选 raw pkcs8 spki jwk ,我们这边在导出公钥时选 spki ,私钥选 pkcs8

2 key 就是上面 CryptoKeyPair privateKey 或者 publicKey

函数返回一个promise对象,结果是一个ArrayBuffer,这边转成pem风格。

windowcryptosubtleimportKey(

format,

keyData,

algorithm,

extractable,

keyUsages

) ,其中:

1 format 可选 raw pkcs8 spki jwk ,对应之前生成时的选择,我们这边在导入公钥时选 spki ,私钥选 pkcs8

2 keyData ,即 windowcryptosubtleexportKey 获得的ArrayBuffer,由于在这里时我们一般只有pem文本的,所以还需要做转换成ArrayBuffer。

3 algorithm 这边我们是rsa,需要填入一个 RsaHashedImportParams 对象,这边对应 cryptosubtlegenerateKey 所需的 RsaHashedKeyGenParams 对象,含有:

4 extractable cryptosubtlegenerateKey

5 keyUsages cryptosubtlegenerateKey

函数返回一个promise对象,结果是一个 CryptoKey

加密 cryptosubtleencrypt(algorithm, key, data) ,其中:

1 algorithm ,加解密只支持RSA-OAEP不支持RSAES-PKCS1-v1_5

2 key 即公钥的 CryptoKey 对象

3 data 是一个 BufferSource 对象,不能直接是要加密的字符串。

结果是一个ArrayBuffer,可以使用windowbtoa(StringfromCharCode(new Uint8Array(e)))输出为base64字符串

解密 cryptosubtledecrypt(algorithm, key, data) ,基本同加密,这边data对应为加密返回的ArrayBuffer,如果是base64字符串比如从后端加密过来的,就需要转为Uint8Array。

返回值同加密

import rsa rsaPublickey = int(pubkey, 16) key = rsaPublicKey(rsaPublickey, 65537) #创建公钥 message = str(servertime) + '\t' + str(nonce) + '\n' + str(password) #拼接明文js加密文件中得到 passwd = rsaencrypt(message, key) #加密 passwd = binasciib2a_hex(passwd) #将加密信息转换为16进制。 return passwd

p=43

q=17

n=731

e1=593

e2=17

我是从1开始一个一个地试的

节选

>

在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。

公钥用来给数据加密,用公钥加密的数据只能使用私钥解密

用来解密公钥加密的数据。

对需要传输的文本,做一个HASH计算,一般采用SHA1,SHA2来获得

使用私钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名。

数据接收端,拿到传输文本,但是需要确认该文本是否就是发送发出的内容,中途是否曾经被篡改。因此拿自己持有的公钥对签名进行解密(密钥对中的一种密钥加密的数据必定能使用另一种密钥解密。),得到了文本的摘要,然后使用与发送方同样的HASH算法计算摘要值,再与解密得到的摘要做对比,发现二者完全一致,则说明文本没有被篡改过。

是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。

公钥登录是为了解决每次登录服务器都要输入密码的问题,流行使用RSA加密方案,主要流程包含:

1、客户端生成RSA公钥和私钥

2、客户端将自己的公钥存放到服务器

3、客户端请求连接服务器,服务器将一个随机字符串加密后发送给客户端

4、客户端根据自己的私钥解密这个随机字符串之后再发送给服务器

5、服务器接受到字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。

进入用户目录下ssh目录:

id_rsa:私钥文件

id_rsapub:公钥文件

authorized_keys: 保存其他公钥的的文件

known_hosts: 已经建立过连接的服务器信息,可以清空。

1执行命令:

此时会重新生成id_rsa私钥文件和id_rsapub公钥文件

用户将公钥发送给其他服务器,其他服务器将接受的公钥保存在authorized_keys里面。持有私钥的用户就可以登录服务器(authorized_keys存放自己的公钥,用户便可以使用私钥从其他的地方登录服务器)。

2将公钥导入到vps

3修改SSHD的配置文件/etc/ssh/sshd_config

4重启SSH后进行测试

常见的公钥密码算法有rsa算法。常见的公钥加密算法有:RSA、ElGamal、背包算法、Rabin(RSA的特例)、迪菲-赫尔曼密钥交换协议中的公钥加密算法、椭圆曲线加密算法(EllipticCurveCryptography,ECC),DSA数字签名(又称公钥数字签名),将摘要信息用发送者的私钥加密,接收者用发送者的公钥才能解密被加密的摘要信息,也属于公开密钥加密算法。

以上就是关于RSA KEY获取失败怎么办全部的内容,包括:RSA KEY获取失败怎么办、什么是RSA公钥密码、前端RSA密钥生成和加解密window.crypto等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9506209.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存