jjzjj

BigInteger

全部标签

c# - 将 C# RSACryptoServiceProvider 翻译成 JAVA 代码

Web服务团队向我提供了这段C#代码,它公开了一些我打算使用的Web服务。我的密码需要使用此代码加密,以便Web服务知道如何在其端解密它。using(RSACryptoServiceProviderrsa=newRSACryptoServiceProvider()){rsa.FromXmlString(publicKey);byte[]plainBytes=Encoding.Unicode.GetBytes(clearText);byte[]encryptedBytes=rsa.Encrypt(plainBytes,false);returnConvert.ToBase64String

java - 从 int 值创建 BigInteger 实例的最有效方法是什么?

我有一个带有BigInteger参数的方法(在第3方库中):publicvoidsetValue(BigIntegervalue){...}我不需要“所有的力量”,我只需要使用整数。那么,我怎样才能将整数传递给这个方法呢?我的解决方案是从int值获取字符串值,然后从字符串创建BigInteger:inti=123;setValue(newBigInteger(""+i));还有其他(推荐的)方法可以做到这一点吗? 最佳答案 BigInteger.valueOf(i); 关于java-从i

java - 无论如何要从 Double 转换为 BigInteger?

有没有办法将double值转换为BigInteger?doubledoubleValue=64654679846513164.2;BigIntegerbigInteger=(BigInteger)doubleValue;我尝试转换它,但它没有用。 最佳答案 如果您想将double的整数部分存储到BigInteger中,那么您可以将其转换为BigDecimal然后然后一个BigInteger:BigIntegerk=BigDecimal.valueOf(doubleValue).toBigInteger();

java - 如何使用 BigInteger 类在 Java 中实现无符号 64 位 int?

我正在寻找一种精确容量为0到2^64-1的数据类型。我们知道Java目前不支持“unsigned”,除非是char数据类型。BigInteger类允许创建长数据类型不支持的更大数字。但我不确定BigInteger类将如何满足我的目的。BigInteger类仅允许通过构造函数进行赋值。我看到以下可能性,但它会生成一个随机数。BigInteger(intnumBits,Randomrnd)ConstructsarandomlygeneratedBigInteger,uniformlydistributedovertherange0to(2^numBits-1),inclusive.我看不到

Java BigInteger 替代方案

有没有办法改进BigInteger缓存性能?当您对BigInteger进行操作时,它总是会创建一个新的BigInteger。例如,当您将两个大整数相乘时,将创建一个新的BigInteger来承载结果。我想使用BigInteger的一些可变版本,它将使用结果更新其中一个字段。 最佳答案 我怀疑如果你能以某种方式做到这一点,你的算法的性能是否会提高,但主要原则是BigInteger是不可变的。您不能在不生成新实例的情况下对其执行操作,并且有充分的理由需要这种行为-也就是说,如果您有多个线程在单个BigInteger上操作,您可以放心这些

java - Java中如何使用keystore来存储私钥?

我使用KeyPairGenerator生成RSAkey对。如果我没记错的话,KeyStore仅用于存储证书而不是key。如何在计算机上正确存储私钥? 最佳答案 注意:此代码仅用于演示目的。将私钥存储在磁盘上时必须对其进行加密。不要按原样使用它。你可以这样做:KeyPairGeneratorkpg=KeyPairGenerator.getInstance("RSA");kpg.initialize(2048);KeyPairkp=kpg.genKeyPair();KeyFactoryfact=KeyFactory.getInstanc

java - StackOverflowError 计算 BigInteger 的阶乘?

我正在尝试编写一个Java程序来计算大数的阶乘。看来BigInteger无法容纳这么大的数字。下面是我写的(简单的)代码。publicstaticBigIntegergetFactorial(BigIntegernum){if(num.intValue()==0)returnBigInteger.valueOf(1);if(num.intValue()==1)returnBigInteger.valueOf(1);returnnum.multiply(getFactorial(num.subtract(BigInteger.valueOf(1))));}上述程序处理的最大数量为5022

java - 如何在java中添加任意长度的两个数字?

如何在java中将任意长度的两个数相加?例如,在java中long大小是64位。所以最大范围是-9223372036854775808到9223372036854775807。我说得对吗?所以如果我们想添加一个大于这个的数字,如下所示,我得到一个错误“整数太大”longa=9223372036854775807L;longb=9223372036854775808L;在C语言中,我们可以将这些数字作为char数组,通过遍历每个char的地址并使用某种数据结构,我们可以将两个任意大小的数字相加。如何实现java.lang.能否遍历String中每个字符的地址。感谢您的回复。我尝试通过将数

java - 如何删除类之间的重复代码?

我有2个类:RecursiveFibonacci和MemorizedRecursiveFibonacci。这是我到目前为止所拥有的。递归斐波那契类publicclassSimpleRecursiveFibonacci{publicBigIntegerfibonacci(intn){if(n和MemorizedRecursiveFibonacci类publicclassMemoizedRecursiveFibonacci{privateMapcache=newHashMap();publicBigIntegerfibonacci(intn){if(n如我所见,MemorizedRecur

java - 如何在 Java 中将 BigInteger 值转换为 Hex

我有一个BigInteger数字,我需要将它转换为十六进制。我尝试了以下方法:Stringdec=null;System.out.println("EnterthevalueinDec:");BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));dec=br.readLine();BigIntegertoHex=newBigInteger(dec,16);Strings=toHex.toString(16);System.out.println("ThevalueinHexis:"+s);但这并没有给我转