如何从 Java 中的 BigInteger 获取无符号字节数组?

2023-12-29

我需要转换一个大整数 https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html以大端格式编码的无符号整数,但我遇到了问题BigInteger.toByteArray https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#toByteArray()返回一个签名表示。如何将此值转换为无符号格式?

(相对)有用的背景

我正在编写一些代码,这些代码使用 JNI 让 c++ 调用一些 Java 方法来处理一些加密功能(这是一个 Microsoft CNG 提供程序,它将一些功能卸载到 Java)。我有 Java 中的公钥,我需要转换的 BigInteger 值是椭圆曲线公钥的坐标 https://docs.oracle.com/javase/7/docs/api/java/security/spec/ECPoint.html#getAffineX()。根据我需要将这些点提供为“以大端格式编码的无符号整数”。

Edit

事后看来,这可能是一个愚蠢的帖子。我对负数和正数以及如何处理它感到困惑(因为已经晚了,我的头脑已经变得混乱),但事实证明我不需要处理这个问题,因为椭圆曲线点不会为负数 https://crypto.stackexchange.com/questions/16604/why-are-there-only-positive-value-points-on-an-elliptic-curve。感谢所有在这里回复的人!我会把它保留下来,以防它对其他人有帮助。


借助 2 的补码参考值,我们可以像下面这样执行此操作

private static final BigInteger TWO_COMPL_REF = BigInteger.ONE.shiftLeft(64);

    public static byte[] parseBigIntegerPositive(BigInteger b) {
        if (b.compareTo(BigInteger.ZERO) < 0)
            b = b.add(TWO_COMPL_REF);

       byte[] unsignedbyteArray= b.toByteArray();
        return unsignedbyteArray;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Java 中的 BigInteger 获取无符号字节数组? 的相关文章

随机推荐

  • 这个危险指针示例是否因 ABA 问题而存在缺陷?

    在书里C 并发实践 https www manning com books c plus plus concurrency in action 作者举了一个使用hazard指针实现无锁栈数据结构的例子 部分代码如下 std shared p
  • 替换数据框列中的日期

    我创建了一个数据框 其日期范围从 2018 年 8 月 1 日到今天 并尝试为每个日期分配一个month start date 例如 2018 08 04 将是 2018 08 01 我已经能够将日期的日期放入 Month start da
  • 跟踪已部署应用程序的文件

    你们在生产中使用什么来部署 应用和跟踪他们的文件 我的意思是跟踪文件是否没有直接在服务器中更改 thanks 我使用 Git 来跟踪 HPC 生产集群上的 usr local 已经有 3 年了 对于 2 2G 主要是二进制文件 运行需要 1
  • ASP Net Core - 将外部身份提供商与个人用户帐户混合以进行审计跟踪

    我已经使用个人用户帐户创建了默认的 ASP Net Core MVC Web 应用程序 我向 AspNetUsers 表添加了一个自定义 UserID INT 字段 并将其作为外键链接到所有其他自定义表 以便我可以跟踪用户在数据库中插入 更
  • Firebase 云消息传递 (FCM) 诊断告诉我们什么?

    我在 Android 应用程序中实现 FCM 已经取得了一定的成功 但是 控制将消息传递到设备所需的时间却是一个挑战 并且受到许多因素的影响 FCM 本身 覆盖范围 wifi 3g心跳 优先级 困倦 闲置等 显然 即时推送是好的 但是在一段
  • 如何在 Cloudflare 后面的 Google Storage Bucket 中托管 React 应用程序?

    我在 React 中有一个小型静态网站 我想将其部署到 Google Storage Bucket 我有一个路由器 jsx与此类似
  • 缺少非捕获 Task.Yield 迫使我使用 Task.Run,​​为什么要遵循这个?

    如果这个问题是基于意见的 请提前道歉 缺乏任务产量 http msdn microsoft com en us library system threading tasks task yield aspx已经讨论过不会捕获执行上下文的版本h
  • 如何在 java 9 中声明模块 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在我的项目中使用 java 9 模块 我想将我的数据和服务类 位于名为com test base 在一个名为 Base 的模块中
  • 如何在 REST API 中管理 3 个资源之间的关系

    我正在创建一个基于 REST 概念的 API 但在谈论相关资源时我仍然有点困惑 我有一个网站 人们可以在多个组中注册并选择多个角色 例如 我们以在公司注册的人为场景 公司 Facebook Google Apple Roles 营销 Sal
  • 如何使用 Core Motion 通过 SwiftUI 输出磁力计数据?

    我在使用 Core Motion 和 SwiftUI 输出磁力计 加速度计和陀螺仪的数据时遇到问题 我假设我的问题与 startMagnetometerUpdates 有关 我尝试使用在堆栈溢出以及 GitHub google 上找到的源代
  • 在循环中将局部变量声明为final

    我知道已经有人提出并回答了非常类似的问题 我阅读了我能够找到的问题 但仍然不是 100 清楚 考虑这个代码片段 public static void fooMethod while lt gt final int temp
  • 显示:表格单元格、内容和填充

    我有一个非常简单的 HTML 页面 它在两列中显示内容 设置我正在使用的列的格式 div 作为外部容器 显示 表行 和两个内部容器 div 作为实际列 显示 表格单元格 其中一列的顶部有填充 标记如下所示 为了清楚起见 省略了额外的标记和样
  • 哪个 gfortran 编译器标志与警告“非法预处理器指令”相关?

    当使用 pFUnit 3 2 9 测试我的 Fortran 代码时 我收到许多 非法预处理器指令 警告 例如 Warning Illegal preprocessor directive path to my file test f90 3
  • JESS 与 DROOLS :向后链接

    我正在尝试用 Drools 替换 Jess 作为我们项目中的向后链接规则引擎 我一直在寻找有关如何使用 Drools 完成反向链接的简单示例 有趣的是 只有 1 个相同example http www slideshare net Mark
  • 如何在 TFS 2012 中创建工作项类型

    如何在 TFS 2012 中创建自定义工作项类型 例如 我想创建一个名为 支持请求 的类型 而不仅仅是错误或任务等 我有一个 XML 模板文件 问候 昂 下载 TFS 2012 Power Tools 以安装流程编辑器 关联 http vi
  • 在 React 组件的 setState 中使用 Math.random 时组件渲染不正确

    目的是显示对象列表中的项目 但在每次页面刷新时 应从列表中随机选择该项目 这里 Testimonials是列表 我想显示该列表中的任何随机项目 如果我使用常量 它就可以正常工作 当我使用随机函数时 它不会显示正确的图像及其关联的项目消息 我
  • JavaScript:输出符号和特殊字符

    我正在尝试使用 JavaScript 将一些符号包含到 div 中 它应该看起来像这样 x reals 但我得到的是 x 8712 reals var div document getElementById text var textnod
  • 如何用 BEM 指定状态?

    使用 BEM CSS 类语法 假设我有一个具有以下类的元素 div class purchase module2 heading tooltip div 现在假设有一个事件或某些东西使这个 工具提示 变得活跃或可见 用 BEM 表达这一点的
  • 在 C++ 中使用 auto 声明变量有缺点吗?

    看起来auto是 C 11 中添加的一个相当重要的功能 它似乎遵循许多较新的语言 与 Python 这样的语言一样 我没有看到任何显式的变量声明 我不确定是否可以使用 Python 标准 使用有什么缺点吗auto声明变量而不是显式声明它们
  • 如何从 Java 中的 BigInteger 获取无符号字节数组?

    我需要转换一个大整数 https docs oracle com javase 7 docs api java math BigInteger html以大端格式编码的无符号整数 但我遇到了问题BigInteger toByteArray