RSA密钥生成方式

通过openssl工具生成RSA的公钥和私钥(opnssl工具可在互联网上下载)。


1.生成RSA私钥

输入命令:openssl genrsa -out rsa_private_key.pem 1024,并回车,得到生成成功的结果,如下图:


此时,bin文件夹中出现一个名为rsa_private_key.pem的文件,用记事本打开该文件,可以看到一个没有换行的字符串:
—–BEGIN RSA PRIVATE KEY—–开头,—–END RSA PRIVATE KEY—–结尾,
该字符串即为原始的私钥。


2.把RSA私钥转换成PKCS8格式

输入命令openssl pkcs8 -topk8 -nocrypt -inform PEM -in rsa_private_key.pem -outform PEM outform,并回车,得到生成成功的结果,即PKCS8格式的私钥,如下图:

  • 右键点击openssl窗口上边边缘,选择编辑→标记,选中要复制的文字(如上图)
  • 此时继续右键点击openssl窗口上边边缘,选择编辑→复制,把复制的内容粘贴至一个新建的记事本中;
  • 重命名前述记事本文件,以便于辨识该文件即为PKCS8格式的私钥。

3.生成公钥

输入命令openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem,并回车, 得到生成成功的结果,如下图:


此时,bin文件夹中出现一个名为rsa_public_key.pem的文件,用记事本方式打开该文件,可以看到一个没有换行的字符串:—–BEGIN PUBLIC KEY—–开头,—–END PUBLIC KEY—–结尾,该字符串即为公钥。

私鑰加密,公鑰解密
pkcs私鑰用於java加密

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RSA加密算法是一种非对称加密算法,其密钥由公钥和私钥组成,其中公钥用于加密,私钥用于解密。下面是Python实现RSA密钥生成的代码: ```python import random import math def gcd(a, b): if b == 0: return a else: return gcd(b, a % b) def is_prime(n): if n == 2 or n == 3: return True if n < 2 or n % 2 == 0: return False if n < 9: return True if n % 3 == 0: return False r = int(math.sqrt(n)) f = 5 while f <= r: if n % f == 0: return False if n % (f + 2) == 0: return False f += 6 return True def generate_keypair(p, q): if not (is_prime(p) and is_prime(q)): raise ValueError("Both numbers must be prime.") elif p == q: raise ValueError("p and q cannot be equal") n = p * q phi = (p-1) * (q-1) e = random.randrange(1, phi) g = gcd(e, phi) while g != 1: e = random.randrange(1, phi) g = gcd(e, phi) d = modinv(e, phi) return ((e, n), (d, n)) def modinv(a, m): g, x, y = egcd(a, m) if g != 1: raise ValueError('Modular inverse does not exist') else: return x % m def egcd(a, b): if a == 0: return (b, 0, 1) else: g, y, x = egcd(b % a, a) return (g, x - (b // a) * y, y) p = 61 q = 53 public_key, private_key = generate_keypair(p, q) print("Public key: ", public_key) print("Private key: ", private_key) ``` 在上述代码中,generate_keypair()函数用于生成公钥和私钥,其中p和q为两个质数,n为p和q的乘积,phi为(p-1) * (q-1),e为一个介于1和phi之间的随机数,d为e的模phi的逆元。 egcd()函数用于求解模逆元,is_prime()函数用于判断一个数是否为质数,gcd()函数用于求解两个数的最大公约数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值