问题

方法BigInteger.isProbablePrime()很奇怪;从文档中,这将告诉数字是否为素数,概率为1 - 1 / 2^arg,其中arg是整数参数。

它已经存在于JDK很长一段时间了,所以它意味着它必须有用。我在计算机科学和算法(和数学)方面的有限知识告诉我,知道一个数字是否"可能"是一个素数而不是一个素数并不是真的有意义。

那么,人们想要使用这种方法的可能情况是什么?密码?

#1 热门回答(66 赞)

是的,这种方法可用于密码学.RSA encryption包含大量素数的发现,有时大约为1024位(约300位)。 RSA的安全性取决于这样一个事实,即将由这些素数中的2个组成的数字相乘,这是非常困难和耗时的。但要使它发挥作用,它们必须是最重要的。

事实证明,证明这些数字也很难。但Miller-Rabin primality test,其中一个素数测试使用isProbablePrime,要么检测到数字是复合的还是没有给出结论。运行此测试n次允许你得出结论,在2个节点中有1个这个数字真的是复合的。运行it100次会产生2100的可接受风险,即这个数字是复合的。

#2 热门回答(20 赞)

如果测试告诉你一个整数不是素数,你当然可以相信100%。

这只是问题的另一面,如果测试告诉你整数是"可能的素数",你可能会怀疑。用不同的"基数"重复测试允许错误地成功地"模仿"素数(相对于多个碱基是强伪素数)的概率可以根据需要做得小。

测试的有用性在于它的速度和简单性。人们不一定会对"可能的素数"作为最终答案的状态感到满意,但是在引入素数测试的大枪之前,人们肯定会避免在几乎所有复合数字上浪费时间。

对整数分解难度的比较是一种红色的鲱鱼。众所周知,整数的素数可以在多项式时间内确定,实际上有证据证明米勒 - 拉宾检验扩展到足够多的基数是确定的(在检测质数时,与可能的素数相反),但这假设广义黎曼假设,所以它不太确定(更昂贵)AKS primality test。

#3 热门回答(18 赞)

用于BigInteger.isProbablePrime(int)的标准用例是密码学。具体而言,某些加密算法(如RSA)需要随机选择的大质数。然而,重要的是,这些算法并不真正要求这些数字被保证为素数 - 它们只需要以极高的概率进行素数处理。

有多高?好吧,在加密应用程序中,人们通常会调用.isProbablePrime(),其参数介于128和256之间。因此,通过这种测试的非素数的概率小于2128或2256中的一个。

让我们从视角来看:如果你有100亿台计算机,每台计算机每秒产生100亿个可能的素数(这意味着任何现代CPU上每个数字的时钟周期不到一个),并且这些数字的素数用.isProbablePrime(128)测试,你平均而言,预计一个非素数将在每1000亿年中出现****。

也就是说,如果那些100亿台计算机在不经历任何硬件故障的情况下以某种方式运行数千亿年,就会出现这种情况。但实际上,更有可能随机宇宙射线在恰当的时间和地点撞击你的计算机,将返回值of.isProbablePrime(128)从false翻转为true,而不会产生任何其他可检测的效果,而不是非-prime数字实际上在该确定性水平上通过概率素性测试。

当然,随机宇宙射线和其他硬件故障的相同风险也适用于确定性素性测试,如AKS。因此,在实践中,即使这些测试由于随机硬件故障而具有(非常小的)基线误报率(更不用说所有其他可能的错误源,例如实现错误)。

由于很容易将米勒 - 拉宾素性测试的内在假阳性率推迟到.isProbablePrime()远低于此基线速率,仅仅通过重复测试足够多次,并且因为,即使重复这么多次,米勒 - 拉宾测试仍然快得多实践比AKS这样最着名的确定性素性测试,它仍然是加密应用程序的标准素性测试。

(此外,即使你偶然选择强伪荧光作为RSA模量的因素之一,它通常也不会导致灾难性的失败。通常,这种假性质是大约两个(或很少)质数的产物。长度的一半,这意味着你最终得到amulti-prime RSA key。只要没有任何因素是小的(如果它们是,原始性测试应该抓住它们),RSA算法仍然可以正常工作,并且虽然键相对于某些类型的攻击比相同长度的普通RSA密钥稍微弱一些,但如果你没有不必要地缩短密钥长度,那么它仍然应该是合理安全的。)

java什么叫用例_BigInteger的.isProbablePrime()的可能用例是什么?相关推荐

  1. Java查漏补缺(08)关键字:static、单例设计模式、理解main方法、类的成员之四:代码块、final关键字、抽象类、接口、内部类、枚举类、注解、包装类

    Java查漏补缺(08)关键字:static.单例设计模式.理解main方法.类的成员之四:代码块.final关键字.抽象类.接口.内部类.枚举类.注解.包装类 本章专题与脉络 1. 关键字:stat ...

  2. java static是单例_JAVA基础-static关键字及单例设计模式

    static关键字 基本概念使用static关键字修饰成员变量表示静态的含义, 此时成员变量由对象层级提升为类层级, 也就是整个类只有一份并被所有对象共享. 该成员变量随着类的加载准备就绪, 与是否创 ...

  3. 抽象单例:一种通用的单例

    背景 单例的一般写法,大家基本都会,这里特指具有以下特征的单例: 1.单例 2.需要延迟加载 3.线程安全 看一下这个类的写法(JAVA): public class A {private stati ...

  4. 【问题描述】3.1.5 用整数1~7依次表示星期一至星期日。由键盘输入一个整数,输出对应的英文表示,如果输入的整数在1~7之外,输出“Error”信息。【样例输入1】1【样例输出1】Monda

    [问题描述]3.1.5 用整数1~7依次表示星期一至星期日.由键盘输入一个整数,输出对应的英文表示,如果输入的整数在1~7之外,输出"Error"信息. [样例输入1]1 [样例输 ...

  5. fedora 33 topbar_31省区市新增确诊33例,天津新增本地确诊1例

    [31省区市新增确诊33例,天津新增本地确诊1例]11月8日0-24时,31个省(自治区.直辖市)和新疆生产建设兵团报告新增确诊病例33例,其中境外输入病例32例(上海13例,陕西6例,广东4例,四川 ...

  6. 手动标记用例状态_【自动化接口用例】从 1 到 1000 过程中的实践和思考

    谢谢打开这篇文章的每个你 关注我们 点击右上角 ··· 设为星标 当一个新人刚加入公司的时候,我们通常告诉新人怎么去写一个自动化用例:从工程配置到如何添加接口.如何使用断言,最后到如何将一个用例运行起 ...

  7. 客服跟踪记录管理php,用例管理平台维护记录,用例管理平台维护_PHP教程

    用例管理平台维护记录,用例管理平台维护 工作需要维护一个用例管理平台,主要是对个别功能点进行优化.此平台保存各项目各时期的测试用例,以及用例查询.管理.评审等功能. 首先在本地搭建模拟线上环境.xam ...

  8. OO系统分析员之路--用例分析系列(2)--用例的类型与粒度 [整理重发]

    在正式讨论如何获取用例之前,笔者觉得有两个问题还是先解释清楚为好,这对正确获取用例有很大帮助.这两个问题也是初学者最为困惑,也是最难掌握的.一个是各种用例类型之间的区别和用法,另一个是用例的粒度.  ...

  9. OO系统分析员之路--用例分析系列(2)--用例的类型与粒度

    OO系统分析员之路--用例分析系列(2)--用例的类型与粒度 在正式讨论如何获取用例之前,笔者觉得有两个问题还是先解释清楚为好,这对正确获取用例有很大帮助.这两个问题也是初学者最为困惑,也是最难掌握的 ...

最新文章

  1. 约束,索引,rownumrownum
  2. 如何优雅的实现 Spring Boot 接口参数加密解密?
  3. FPGA之道(27)VHDL的操作符号
  4. 开发日记-20190430 关键词 apt,aspectj,javassist
  5. zcmu-1931(dfs方格切割)
  6. 【HDOJ1043】八数码的八境界
  7. nginx php实例,多个mysql,nginx,php实例环境安装zabbix(完全自定义)
  8. 【STM32 .Net MF开发板学习-09】AD模拟量采集
  9. HCIA-RS(2019最新题库)
  10. win10系统安装教程(U盘PE+UEFI安装)
  11. 洛谷-P1957-口算练习题
  12. Mac常见问题:无线键盘失灵!
  13. Spark 开发环境搭建(1)IDEA Gradle的安装部署、使用
  14. Flutter项目插件整理
  15. 关于python机器学习cross_val_score()交叉检验的参数cv实际默认为5这件事,你怎么看?
  16. 如是古籍数字化工具平台介绍---自动秒级识别古籍OCR
  17. window server 2012 更改密钥 更改系统序列号
  18. 涨粉神器,粉丝零距离交流!CSDN APP迎来更新
  19. 便签数据怎么恢复 有能恢复手机便签数据的方法吗
  20. 山西对口升学本科学校计算机,2019山西中职对口升学本科第一批院校录取分数线公布...

热门文章

  1. ubuntu系统重启后桌面分辨率减小的原因及解决方法
  2. 如何使用pattern recognition letter 的word写作模板
  3. 【luogu4145】 上帝造题的七分钟2 / 花神游历各国 [线段树]
  4. Android打开相机进行人脸识别,使用虹软人脸识别引擎
  5. .net中的设计模式---单例模式
  6. Highsoft.Highcharts 5.0.6439.38401 key
  7. [HDOJ1823] Luck and Love(线段树,树套树)
  8. Ising模型(伊辛模型)
  9. StyleCop学习笔记——默认的规则
  10. jQuery1.11源码分析(8)-----jQuery调用Sizzle引擎的相关API