biginteger 原理_Java BigInteger踩坑

学习burpsuite的loader-kengen原理的时候,以下字符通过Java BigInteger表示输出和pyhon里的不一致

tdq99QBI3DtnQQ7rRJLR0uAdOXT69SUfAB/8O2zi0lsk4/bXkM58TP6cuhOzeYyrVUJrM11IsJhWrv8SiomzJ/rqledlx+P1G5B3MxFVfjML9xQz0ocZi3N+7dHMjf9/jPuFO7KmGfwjWdU4ItXSHFneqGBccCDHEy4bhXKuQrA=

pyhon下10进制和16进制

127702545355297024333429959781587858069905393473141316912736602016763456807823073371201714045389225082875078977073188987293761060998601431076147712924734841376044806737149037405159346208103921670369951829058878599971903611447448880396085184296375054850055720027341118913696701387622975160908648039096593040048

0xb5dabdf50048dc3b67410eeb4492d1d2e01d3974faf5251f001ffc3b6ce2d25b24e3f6d790ce7c4cfe9cba13b3798cab55426b335d48b09856aeff128a89b327faea95e765c7e3f51b90773311557e330bf71433d287198b737eedd1cc8dff7f8cfb853bb2a619fc2359d53822d5d21c59dea8605c7020c7132e1b8572ae42b0

Java下

String str = "tdq99QBI3DtnQQ7rRJLR0uAdOXT69SUfAB/8O2zi0lsk4/bXkM58TP6cuhOzeYyrVUJrM11IsJhWrv8SiomzJ/rqledlx+P1G5B3MxFVfjML9xQz0ocZi3N+7dHMjf9/jPuFO7KmGfwjWdU4ItXSHFneqGBccCDHEy4bhXKuQrA=";

byte[] data = Base64.getDecoder().decode(str);

BigInteger b1 = new BigInteger(data);

System.out.println(b1);

System.ou

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的BigInteger类是用于处理大数的类。它可以处理比long类型更大的整数。BigInteger类的原理是使用一个int类型的数组来存储大数的每个位。数组中的每个元素都是大数的一部分。这个数组被称为mag[]。 1. 按位取反:BigInteger类提供了not()方法来实现按位取反的操作。该方法首先创建一个与原始BigInteger对象相同长度的int数组result[]。然后,通过循环遍历result[]数组,将mag[]数组中的每个元素取反并存储到result[]数组中。最后,使用valueOf()方法将result[]数组转换为一个新的BigInteger对象并返回。 示例代码如下: ```java public BigInteger not() { int[] result = new int[intLength()]; for (int i = 0; i < result.length; i++) { result[i] = ~getInt(result.length - i - 1); } return valueOf(result); } ``` 2. 按位与操作:BigInteger类提供了and()方法来实现按位与操作。该方法首先创建一个长度为两个BigInteger对象中较大的int数组result[]。然后,通过循环遍历result[]数组,将mag[]数组和另一个BigInteger对象的mag[]数组中对应位置的元素进行按位与操作,并将结果存储到result[]数组中。最后,使用valueOf()方法将result[]数组转换为一个新的BigInteger对象并返回。 示例代码如下: ```java public BigInteger and(BigInteger val) { int[] result = new int[Math.max(intLength(), val.intLength())]; for (int i = 0; i < result.length; i++) { result[i] = (getInt(result.length - i - 1) & val.getInt(result.length - i - 1)); } return valueOf(result); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值