如何阅读.PEM文件得到私钥和公钥

如何阅读.PEM文件得到私钥和公钥,第1张

以下命令来生成密钥对。
$openssl genrsa -out mykeypem 2048
$openssl pkcs8 -topk8 -inform PEM -outform PEM -in mykeypem \
-out private_keypem -nocrypt
这个命令得到的公共密钥。
$ openssl rsa -in mykeypem -pubout -outform DER -out public_keyder
我写了两方法读取私钥和公钥
分别。public PrivateKey getPemPrivateKey(String filename, String algorithm) throws Exception {
File f = new File(filename);
FileInputStream fis = new FileInputStream(f);
DataInputStream dis = new DataInputStream(fis);
byte[] keyBytes = new byte[(int) flength()];
disreadFully(keyBytes);
disclose();
String temp = new String(keyBytes);
String privKeyPEM = tempreplace("-----BEGIN PRIVATE KEY-----\n", "");
privKeyPEM = privKeyPEMreplace("-----END PRIVATE KEY-----", "");
//Systemoutprintln("Private key\n"+privKeyPEM);
Base64 b64 = new Base64();
byte [] decoded = b64decode(privKeyPEM);
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(decoded);
KeyFactory kf = KeyFactorygetInstance(algorithm);
return kfgeneratePrivate(spec);
}
public PublicKey getPemPublicKey(String filename, String algorithm) throws Exception {
File f = new File(filename);
FileInputStream fis = new FileInputStream(f);
DataInputStream dis = new DataInputStream(fis);
byte[] keyBytes = new byte[(int) flength()];
disreadFully(keyBytes);
disclose();
String temp = new String(keyBytes);
String publicKeyPEM = tempreplace("-----BEGIN PUBLIC KEY-----\n", "");
publicKeyPEM = privKeyPEMreplace("-----END PUBLIC KEY-----", "");
Base64 b64 = new Base64();
byte [] decoded = b64decode(publicKeyPEM);
X509EncodedKeySpec spec =
new X509EncodedKeySpec(decoded);
KeyFactory kf = KeyFactorygetInstance(algorithm);
return kfgeneratePublic(spec);
}

1)鲍勃有两把钥匙,一把是公钥,另一把是私钥

2)鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。

4)鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

9)苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。

>1、首先生成公钥。打开SecureCRT(我的版本为70,估计其他版本基本相同)程序,点击菜单栏的“工具”-》“创建公钥”。按照步骤执行。其中一步比较重要就是选择公钥的格式。建议选择“OpenSSH”,否则在服务器端使用时需要转换为OpenSSH各式。何必多次一举呢。所以这里必须选择“OpenSSH”。如果选错了。重新生成一次就可以了。然后选择公钥私钥存放的地方。默认Identity是私钥,Identitypub是公钥。2、把Identitypub文件上传到你要登陆的Linux服务器上。方法有很多,比如ssh(先不要配置为公钥登陆),ftp等。具体 *** 作自己搞定。上传时选择ASCII方式。3、在SecureCRT创建服务器连接。协议使用ssh。在“鉴权”方法中,取消勾选“密码”。选择“公钥”,然后点击右边的属性按钮,在对话框中。使用全局公钥设置:表示所有连接都使用该公钥连接服务器。使用会话公钥设置:可以分别为每个连接指定不同的公钥。下面的路径就是指明私钥的具体路径。注意了,这里要指明私钥的路径。保存连接就可以了。Linux服务器端配置1、sshd_conf配置主要修改如下几个内容:PermitRootLogin no # 默认为注释,先配置为禁止root用户登陆,允许root登陆太危险了。好几次差点犯错误。切记切记!RSAAuthentication yes #默认为注释, 启用 RSA 认证AuthorizedKeysFile ssh/authorized_keys # 验证公钥的存放路径PubkeyAuthentication yes # 默认为注释,启用公钥认证PasswordAuthentication no # 禁止密码认证,默认是打开的。保持后,重新启动ssh服务。在不同的linux服务器上,重启的方法不同。RedHat,CentOS: service sshd restart //redhat 7 的方法已经改了。openbsd,freebsd: /etc/rcd/sshd restart2、重点部分:配置公钥存放哪的问题。要把第一部分上传上来的公钥放到用户home目录的ssh/ 目录下。这里说明一下。如果你想使用test账号登陆,就要把公钥放到test账户的ssh目录下。你可以直接把Identitypub改为authorized_keys 当然也可还是用其他方法。比如:cat Identitypub >> authorized_keys另外说明一下。ssh目录权限是700,authorized_keys文件权限为644重点补充,如果还有其他人也想用自己的公钥登陆服务器,该如何 *** 作呢? 正常 *** 作应该为该用户在服务器上创建一个账号,重新执行本次(Linux服务器端配置,第2点) *** 作。当然,你也可以偷懒,把他的公钥也放到test账号的authorized_keys文件中。但两个公钥的内容之间使用换行符隔开。这样的方法还是不可取的。最后,使用SecureCRT登陆linux服务器。这里要注意,即使你使用公钥登陆服务器,当你连接的时候,还是要你输入用户名。为何呢?不是说公钥验证么?其实,服务器要知道用你的私钥和哪个用户的ssh目录下的authorized_keys文件内容进行解密。不可能用你的私钥和所有的用户authorized_keys文件进行匹配测试。但是也有例外,如果你在linux系统上使用公钥登陆Linux服务器,就不需要指明用户。方法如下:# ssh 1721624222为何呢?这时系统默认以为你登陆的远程账号就是你当前登陆的账号。如果你设置了公钥口令,连接时比如输入。为了安全,这个口令是必须要有的。在SecureCRT中,口令被翻译为:通行短语。呵呵。补充一下,在linux系统上,如何创建公钥和私钥呢?方法很简单,执行ssh-keygen命令,按照提示就可以完成。完成后,自动会在当前用户的home目录,创建ssh文件夹。服务器端配置和上面的方法相同。

使用公钥和私钥接入独立站点需要执行以下几步:
1 生成公钥和私钥:首先,你需要使用相应的工具生成公钥和私钥。这通常可以使用RSA的特定实现工具完成,比如OpenSSL或一些可用的秘密算法库(PKI)。
2 将公钥上传到服务器上:接下来,你需要将生成的公钥上传到你要接入的服务器上。
3 从服务器中获取私钥:当公钥已经上传之后,现在你可以从服务器获取对应的私钥,这可以通过ssh-keygen等Linux里的一些秘密算法工具来实现。
4 使用私钥登陆服务器:最后,你可以使用私钥来登陆服务器,或者使用私钥来签名一些文档或信息,确保它的完整性和有效性。

SSL证书公钥(Public Key)与私钥(Private Key)是通过加密算法得到的一个密钥对(即一 个公钥和一个私钥,也就是非对称加密方式)。公钥可对会话进行加密、验证数字签名,只有使用对应的私钥才能解密会话数据,从而保证数据传输的安全性。公钥是密钥对外公开的部分,私钥则是非公开的部分,由用户自行保管。
通过加密算法得到的密钥对可以保证在世界范围内是唯一的。 使用密钥对的时候,如果用其中一个密钥加密一段数据,只能使用密钥对中的另一个密钥才能解密数据。例如:用公钥加密的数据必须用对应的私钥才能解密;如果用私钥进行加密也必须使用对应的公钥才能解密,否则将无法成功解密。

私钥自己保存,公钥对外公开,因为私钥是唯一的且只有自己知道,所以完全可以作为一种身份的标识,所以可用来签名。

1、PGP生成账户时在我的文档中会生成secring-bak(私钥),pubring-bak(公钥),导出时不包含私钥文件为2K,包含时为4K,可以用记事本查看。

2、别人的公钥肯定是别人给你,用自己的公钥加密,别人是无法查看的。

3、在导出密钥选择不包含私钥(默认没有选择),即为公钥,可以通过密钥大小或文本打开查看。

4、不存在公钥加密再私钥加密,用谁的公钥加密,谁才能解密。


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

原文地址: http://outofmemory.cn/zz/13231984.html

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

发表评论

登录后才能评论

评论列表(0条)

保存