如何保证生成的私钥不重复(相同)

原创 2007年09月25日 23:03:00

心提示:openssl或是其它基于<公钥,私钥>的算法中,如何保证生成的私钥不重复(相同),不被有恶意的人生成同样的私钥? 1、CA根服务器的如何保证颁布给别人的私钥,不会被hacker暴力算出来? 2、我建一个企业内部的CA服务器,怎么做到颁发的证书不让其它人也安个CA,算出相..... 

 

enssl或是其它基于<公钥,私钥>的算法中,如何保证生成的私钥不重复(相同),不被有恶意的人生成同样的私钥?

1、CA根服务器的如何保证颁布给别人的私钥,不会被hacker暴力算出来?

2、我建一个企业内部的CA服务器,怎么做到颁发的证书不让其它人也安个CA,算出相机的私钥来。

 

RSA工作原理
1)  任意选取两个不同的大质数p和q,计算乘积r=p*q;
2)  任意选取一个大整数e,e与(p-1)*(q-1)互质,整数e用做加密密钥。注意:e的选取是很容易的,例如,所有大于p和q的质数都可用。
3)  确定解密密钥d: d * e = 1 modulo(p - 1)*(q - 1) 根据e、p和q可以容易地计算出d。
4)  公开整数r和e,但是不公开d;
5)  将明文P (假设P是一个小于r的整数)加密为密文C,计算方法为:
C = Pe modulo r
6)  将密文C解密为明文P,计算方法为:
P = Cd modulo r
然而只根据r和e(不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密。

 

 

我的问题是如果在某个时间某个CA服务器产生出的 随机数 p,q,和e 碰巧与之前(另外一台主机的)的相同以后,那密钥不就重担了吗,失去了其唯一标识一个用户的作用。


p q 那是很重要的,但一切定理和理论都基于假设,安全理论也不例外。此处的假设就是,没有一个人能够获得和你的 CA 一样的 RSA 密钥对。如果产生了重复,岂不等同于密钥被破解?如果你知道密钥被破解之后该做些什么,你也就清楚密钥产生了重复以后你的任务。

如果真的巧合,随机数相同,但是你不知道谁的密钥和你相同
就像银行密码,一定有人和你相同,但是你不知道是谁。

阁下和我的想法一样,但不知是否真的这样,还是这些算法本身有一种机制可保证产生的随机数不同。
书上说1024位的RSA要179台2GB内存的主机300,0000年才可破解。但现在互联网上的证书服务器这么多,都在根据RSA算法去生成随机数,我想这个重复的概率是大大增加了。

可以不用担心会产生相同的证书/私钥,只要关心私钥的安全性,使用usb key之类的

 

 

写一个彩票程序:30选7

1. 写一个彩票程序:30选7。随机(1~30之间)生成7个随机数,注意不能重复。然后从键盘输入7个数,对比7个数是否与随机数有相同的。最后显示“中了几个号”。同时,如果中了7个号,显示一等奖;如果中...
  • u010394032
  • u010394032
  • 2013年10月20日 13:32
  • 2141

随机生成10个1--20之间的随机数,要求不能重复。(for循环解题)

题目:随机生成到一个10个1--20之间的随机数,要求不能重复,并将这10个数装入到数组中(提示:遇到重复的,则不存放到数组中,继续随机获取下一个数) 这个题目困扰我2个小时之久,后面在网上搜索的答案...
  • qq_38289863
  • qq_38289863
  • 2017年12月09日 19:57
  • 148

JSP开发WebMail邮件程序系统

电子邮件(E-mail)是Internet上使用最广泛的服务之一,传统的Email应用模式基于C/S结构,即用户使用客户端的邮件收发工具(如Outlook、Foxmail等)与提供邮件服务的服务器(如...
  • lifuyun
  • lifuyun
  • 2007年07月18日 10:55
  • 1398

Python实现的彩票机选器

本文实例讲述了Python实现彩票机选器的方法。分享给大家供大家参考。具体实现方法如下:# -*- coding: utf8 -*- from Tkinter import * import tkFo...
  • xsj_blog
  • xsj_blog
  • 2016年09月07日 23:35
  • 219

JAVA模拟----- 彩票机子-----抽奖过程的实例化

/* 时间: 2012-10-05 作者: 烟大阳仔 程序要求: 模拟彩票抽奖机的功能编写一个程序,实现随即输出六个号码 程序解释: 该段程序没有传递参数 */ class Day1005_...
  • wangyang1354
  • wangyang1354
  • 2012年10月05日 14:23
  • 2222

生成一个不重复的随机数组

using System.Collections;             int MaxNumber =100;            Hashtable hashtable = new Hasht...
  • michaellfd
  • michaellfd
  • 2010年10月19日 16:34
  • 147

如何在一个数组中取不同的6个随机数

原理:从数组中 ,随机取了一个数 ,我们把这个数与这个数组的最后一个数进行位置交换,并把这个数存到另外一个数组中,我们在进行第二次随机,从这个数组的第一个位置随机到倒数第二个位置,随机取一个数,我们把...
  • hs2201056
  • hs2201056
  • 2017年03月06日 22:28
  • 1070

随机生成7个不重复的彩票号码 (33选7)

class TestMy {  public static int num = 7;//决定生成不重复随机数的个数  public static int value = 33;//生成随机数的取值...
  • wangruilove71
  • wangruilove71
  • 2011年11月02日 23:37
  • 812

JavaCodeTra 36选7 彩票抽奖

想写个小代码试试自己的运气,然并卵,并不能猜中 import java.util.Random; import java.util.Scanner; /** * */ /** * @au...
  • hhooong
  • hhooong
  • 2015年07月15日 10:12
  • 889

一个求随机数的程序

程序说明: 这是一个求随机数的程序,随机数的个数为N,可以手动输入,因为我定 义的 数组 是ran[1000],所以我的是产生0~1000内的不重复的随机数。            ...
  • u011749143
  • u011749143
  • 2014年09月05日 14:28
  • 126
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何保证生成的私钥不重复(相同)
举报原因:
原因补充:

(最多只允许输入30个字)