未提供 Bouncycastle 加密算法

2024-05-03

我正在尝试将 BouncyCastle 与 android 一起使用来实现 ECDH 和 EL Gamal。我添加了 bouncycastle jar 文件(bcprov-jdk16-144.jar)并编写了一些适用于我的计算机 jvm 的代码,但是当我尝试将其移植到我的 android 应用程序时,它会抛出:

java.security.NoSuchAlgorithmException: KeyPairGenerator ECDH implementation not found

代码示例是:

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

java.security.KeyPairGenerator keyGen = org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator.getInstance("ECDH", "BC");
                ECGenParameterSpec ecSpec = new ECGenParameterSpec("prime192v1");

                keyGen.initialize(ecSpec, SecureRandom.getInstance("SHA1PRNG"));



                KeyPair pair = keyGen.generateKeyPair();
                PublicKey pubk = pair.getPublic();
                PrivateKey prik = pair.getPrivate();

然后我编写了一个简单的程序来查看有哪些加密算法可用,并在我的 Android 模拟器和我的计算机 jvm 上运行它,代码是:

Set<Provider.Service> rar = new org.bouncycastle.jce.provider.BouncyCastleProvider().getServices();
    Iterator<Provider.Service> ir = rar.iterator();
    while(ir.hasNext())
        System.out.println(ir.next().getAlgorithm());

在 Android 上,当我在计算机上正常运行时,我没有获得任何 EC 算法,这很好。

在编译许多充气城堡类时,我还遇到以下两个错误:

01-07 17:17:42.548:信息/dalvikvm(1054):DexOpt:无法解析不明确的类“Lorg/bouncycastle/asn1/ASN1Encodable;”

01-07 17:17:42.548:DEBUG/dalvikvm(1054):DexOpt:不验证“Lorg/bouncycastle/asn1/ess/OtherSigningCertificate;”:多个定义

我究竟做错了什么?


你可能想要海绵城堡 http://rtyley.github.com/spongycastle/- 我用 Bouncy Castle 专门针对 Android 进行的重新打包。正如这里所指出的:

http://code.google.com/p/android/issues/detail?id=3280 http://code.google.com/p/android/issues/detail?id=3280

...不幸的是,Android 平台包含了 Bouncy Castle 的精简版本,由于类加载器冲突,这也使得安装库的更新版本变得困难 - 即使您添加完整的 BC jar,您也不会获得额外的类你补充道。

Spongy Castle 完全替代了 Android 附带的 Bouncy Castle 加密库的残缺版本。要使其在 Android 上运行,需要进行一些小更改:

  • 所有包名称已从 org.bouncycastle.* 移至 org.spongycastle.* - 因此没有类加载器冲突
  • Java 安全 API 提供程序名称现在为SC而不是BC
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未提供 Bouncycastle 加密算法 的相关文章

  • 在最后一个 EditText 处按键盘上的“完成”后隐式“提交”

    我使用过一些应用程序 当我填写用户名 然后转到密码时 如果我在键盘上点击 完成 则会自动提交登录表单 而无需单击提交按钮 这是怎么做到的 尝试这个 在您的布局中放置 编辑以下内容
  • 使用 SkiaSharp 在 Xamarin 中加载 SVG 文件

    从版本 1 55 0 开始 SkiaSharp 支持读取 SVG 文件 该软件包已于几天前发布 2016 年 11 月 10 日 但我找不到足够的有关如何使用它的文档 需要以下包 SkiaSharp 1 55 0 SkiaSharp 视图和
  • 在 Cordova 中单击 html 按钮时启动新活动

    我正在尝试使用 Cordova 和 Java 构建 Android 应用程序 我想构建当在 HTML 代码中单击按钮时启动新 Intent 的意图 这是我的 HTML 代码 h2 Hello Android h2
  • 使用自定义 cordova 插件未找到类异常

    我正在开发一个打印应用程序 它使用自定义 API 通过 USB 访问打印机 因此我需要一个自定义 Cordova 插件 我开始开发它 这是一个非常好的挑战 但目前也非常令人沮丧 因为我不明白为什么我的插件不能正确使用 事情是 1 插件安装正
  • 剃须刀付款给予 未发现合适的付款方式错误

    所以我正在实现这个简单的剃 刀支付集成 但它给了我一个 找不到合适的付款方式 错误 我之前尝试过选择付款选项表格 但也不起作用 val razorpay RazorpayClient my key my secret key val ord
  • 等待设备时出错:AVD 的模拟器进程 .... 已被终止

    我是Andriod开发的新手 在运行该应用程序时遇到了一个奇怪的问题 如下图所示 我也google了一下 但没有找到有用的答案 谁能告诉我我能做什么 gt 我找到了这个 只需转到这个目录 cd ANDROID HOME Sdk emulat
  • 如何在 API 级别 8 到 19 的 Android 设备上同时使用 DigitalClock 和 TextClock?

    我正在为 API 级别 8 到 19 的设备制作应用程序 其中包含时钟 我尝试将 DigitalClock 进行布局 我从 Eclipse 收到消息 该类自 API 级别 17 起已弃用 建议使用 TextClock 但是当我放置 Text
  • 原包AndroidManifest属性有什么用?

    我使用 apktool 提取 Jelly Bean 上默认浏览器的清单 清单中出现了这一行
  • Android 7 GraphicBuffer 替代方案,用于直接访问 OpenGL 纹理内存

    从移动设备具有 CPU 和 GPU 共享内存这一事实中获利的唯一方法是使用GrphicBuffer 但由于 Android 7 限制对私有本机库 包括 gralloc 的访问 因此无法再使用它 问题 是否有其他方法可以直接内存访问纹理的像素
  • 如何从Android手机获取所有音乐文件的列表

    我创建了一个扫描手机上音乐文件的应用程序 如果我扫描文件夹 它会扫描音乐文件 SD卡 音乐但当我写入时它不会扫描 mp3 文件 sdcard 它运行良好 但它在某些设备上不起作用 应用程序崩溃可能是因为该手机上不存在该路径 我该怎么办 CO
  • Android 浏览器缩放?

    我正在尝试为 Android 创建一个移动网站 当我将主体宽度设置为 480px 屏幕宽度 时 结果比我预期的大 50 左右 看来 android 正在缩放它所绘制的内容并弄乱了我所有的布局 有谁知道如何禁用它或解决它 我已经在使用这个 您
  • 如何让更宽的图像在后台滚动

    就像 LinkedIn 中的前三个屏幕一样 Splash 登录 注册按钮 登录 注册表单 它们都具有相同的背景图像 但是当我们从一个活动移动到另一个活动时 背景图像从右滚动到左侧 我只能尝试overridePendingTransition
  • Flamingo 更新后无法在 Android Studio 中构建 Java 或 Kotlin 项目 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 火烈鸟更新后无法创建项目 它显示一些错误 未找到 com android tools build gradle 8 0 0 的匹配变体 消费
  • 支持的 Android 设备:0 台设备

    我们是 TourisMap 的开发商 我们不明白为什么在 Google Play 开发者控制台上上传 apk 后 我们支持 0 台设备 我们个人的想法是 Manifest 和 build gradle 都可以 我们可以生成 apk 然后我们
  • Android:需要记录麦克风输入

    有没有办法在实时播放 预览过程中记录 Android 中的麦克风输入 我尝试使用AudioRecord and AudioTrack这样做 但问题是我的设备无法播放录制的音频文件 实际上 任何Android播放器应用程序都无法播放录制的音频
  • Android 自定义相机 - 在矩形内裁剪图像

    我有一个自定义相机应用程序 它有一个居中的矩形视图 如下所示 当我拍照时 我想忽略矩形之外的所有内容 该视图与我的 XML 视图中的 Camera Preview 或 SurfaceView 没有任何联系 如下所示
  • 使用 Swift 在 iOS 和 Android 之间共享核心代码

    我想要的是 使用 Swift 在 Android 和 iOS 之间共享非 UI 代码 问题 Android 具有 NDK 支持 允许您使用 Java 本机接口 JNI 运行 C 和 C 代码 不是 Objective C 我是一名Java程
  • onLocationChanged 回调是在哪个线程上进行的?主 UI 线程?

    当在我的应用程序中进行此回调时 我有相当多的工作要做 通过 ORM 库和一些基于距离的计算读取和写入 SQL 数据库 当然 我担心不会阻塞主 UI 线程 因此我一直在尝试 未成功 找出这是否是进行回调的线程 如果是 我打算在回调发生时触发的
  • 使用“是/否”对话框拦截链接 LinkMovementMethod

    我有一个标准LinkMovementMethod https developer android com reference android text method LinkMovementMethod建立在我的TextView当用户触摸链
  • 在 Android 上使用 Excel 文件

    我正在开发一个应该能够创建 读取和写入 Excel 文件的模块 是否有 推荐 轻量级 Java 库用于处理可以在 Android 上运行的 Excel 文件 欢迎提出建议 Thanks 找到一个

随机推荐

  • 代码签名身份 <名称> 与任何有效的、未过期的代码签名证书不匹配

    我希望有人能帮我解决这个令人抓狂的问题 我和我的朋友正在开发一个 mac 商店应用程序 托管在 github 上 一个月前 我们使用他的开发中心帐户从他的机器上发布了该应用程序 我最近将源代码从 github 拉到我的机器上 以进行更新 但
  • 使用 php5-geoip 和 Maxmind 数据库获取 IPv6 支持

    我按照这些相同的步骤进行了 geoip 设置 http php net manual en geoip setup php http php net manual en geoip setup php wget http geolite m
  • Spring 3.1 MVC - 表单处理工作流程最佳实践

    目前我正在尝试了解 Spring MVC 3 1 中表单提交 验证 错误处理的正确工作流程 不 我有一些问题 保留表单错误 通过重定向绑定模型的正确方法是什么 是否有内置方法 我还没有找到 我知道我可以使用 Spring 表单标签和 JSR
  • 选择给定日期范围内的所有月份,包括值为 0 的月份

    我正在尝试编写一个 MySQL 查询来获取给定日期之间所有月份的每月平均值 我的想法是这样的 查询 类似 SELECT AVG value1 as avg value 1 AVG value2 as avg value 2 MONTH sa
  • JavaScript“可写”属性描述符如何工作?

    为什么 JavaScript 可写 属性描述符不禁止任何属性更改 例如 var TheDarkKnight Object create Superhero name value Batman writable false TheDarkKn
  • ngOnChange 不存储 previousValue 属性

    Angular2 RC4 angularfire2 2 0 0 beta 2 在我的子组件中我无法获取changes posX previousValue存储任何东西 父级 html 的片段 inside ngfor loop posX c
  • 将图像从 JQuery 上传到 Node JS

    我需要从我的网站上传图像文件HTML页 但是 我不会使用form标签 因为还有其他form稍后将用于将数据传递到服务器的字段 文本字段 复选框等 我的后端在Node JS 我想要的只是从Node Js结尾 我怎样才能做到这一点 HTML d
  • 使用 OpenCV 查找重叠/复杂的圆

    我想计算红圈半径 图2 我在使用 OpenCV 的 HoughCircles 找到这些圆圈时遇到了麻烦 如图所示 2 我只能使用 HoughCircles 找到中心以黑色显示的小圆圈 original fig 2 由于我知道红色圆圈的中心
  • 如何使用单元格内的十六进制颜色值突出显示单元格?

    我有一个符号和匹配的十六进制颜色的电子表格 我想用单元格内的十六进制颜色填充单元格本身 或其旁边的单元格 我读过一些有关 条件格式 的内容 我认为这就是实现的方法 我怎样才能达到我想要的结果 条件格式无法实现所有颜色 假设 Row1 包含数
  • 未找到 EOF 标记 - 如何在 PyPDF 和 PyPDF2 中修复?

    我正在尝试使用 Python 将几个 PDF 文件合并为一个 PDF 文件 我已经尝试过 PyPDF 和 PyPDF2 在某些文件上 它们都抛出相同的错误 PdfReadError 未找到 EOF 标记 这是我的代码 page files
  • 如何通过谓词将序列分成两部分?

    如何通过谓词将序列拆分为两个列表 替代方案 我可以使用filter and filterNot 或者编写我自己的方法 但是没有更好的更通用 内置 方法吗 通过使用partition方法 scala gt List 1 2 3 4 parti
  • 为什么 ruby​​ 方法没有词法作用域?

    例如 def test a a is for apple def inner method a something this will refer to a different a end inner method puts a end 这
  • 将 JSON 数据从服务发送到 Android 中的 UI

    要求是 我有一个后台服务 在该服务中我正在执行 REST 调用来获取 JSON 数据 我想将 JSON 数据发送到 UI 并更新内容 我可以使用的一种方法是将整个 JSON 字符串存储在 SharedPreferences 中并在 UI 中
  • 使用R中的XLSX包在Excel中打印data.frame时出错

    数据框是可见的 没有任何错误 但是 当使用 XLSX 包的 write xlsx 函数打印相同内容时 会出现错误 Error in jcall cell V setCellValue value method setCellValue wi
  • DragTarget onWillAccept 和 onAccept 未触发

    我从 Flutter 开始 无法使用拖放功能 我遵循了文档 但不知道我做错了什么 此示例应用程序显示三个正方形 蓝色是可拖动的 其他的都设置了 DragTarget 一个在方块内 一个在方块外 当我拖动蓝色方块时 它会打印拖动开始的信息 但
  • Z3统计中内存使用量的单位是什么?

    z3 统计中测量内存使用情况的单位是什么 是MB还是KB 记忆到底意味着什么 是执行期间的最大内存使用量还是所有分配的总和 它是执行期间最大堆大小的近似值 并通过 cmd context cpp 中的以下函数将其添加到统计对象中 void
  • 调度队列:如何判断它们是否正在运行以及如何停止它们

    我只是在玩 GCD 并且编写了一个 CoinFlipper 玩具应用程序 抛硬币的方法如下 void flipCoins NSUInteger nFlips Create the queues for work dispatch queue
  • flash/flex:渐进式下载与 rtmp

    我试图理解并真正确定何时在 Flex flash 中使用渐进式下载与 rtmp 看来主要的一点是 rtmp 不与 http 一起提供服务 而渐进式下载则由 http 提供 由于它不是 rtmp 因此资源受到保护 因为无法从 swf 外部连接
  • 如何检查数据行中是否存在具有给定名称的列

    我想从数据行中的循环插入一个值 因此在数据行中输入值之前 我想检查表中是否存在特定列名称 请告诉我如何检查 首选 vb net 我得到了答案 并且它正在工作 它是 If dr Table Columns Contains columnnam
  • 未提供 Bouncycastle 加密算法

    我正在尝试将 BouncyCastle 与 android 一起使用来实现 ECDH 和 EL Gamal 我添加了 bouncycastle jar 文件 bcprov jdk16 144 jar 并编写了一些适用于我的计算机 jvm 的