JKS、BKS 和 PKCS12 文件格式

2024-05-09

我正在设置一个无头服务器,该服务器使用用户提供的数据(JS、CSS、HTML + 密钥库)为 Android 构建 Phonegap 混合应用程序。我想进行一些基本的客户端检查,以确保上传的密钥库有效。对于 JKS 文件,我发现可以通过确保提供的文件的前四个字节是 MAGIC 数字来进行基本检查0xFEEDFEED作为指定here http://metastatic.org/source/JKS.java。我意识到这并不能消除用户提供垃圾的可能性,但它作为初步的客户端屏幕确实有所帮助。我想对 PKCS12 和 BKS 密钥库实施类似的筛选,但无法找到这些文件格式的任何解释。我将非常感谢任何能够提供有关该主题的信息的人。


首先,需要考虑两件事:

  • 您的列表中缺少 JCEKS(JKS 的更安全版本,幻数是0xCECECECE).
  • BKS 有两个不兼容的版本。新版本随 Bouncy Castle 1.47 一起推出,完全取代了旧版本。因此,使用 BC 1.47 或更高版本生成的 BKS 密钥库无法使用 BC 1.46 或更早版本读取。在 BC 1.49 中添加了新的密钥库类型“BKS-V1”,它与旧格式兼容(请参阅BC 发行说明 https://www.bouncycastle.org/releasenotes.html).

BKS 格式以前 4 个字节中的版本号开始,以空字节和 SHA-1 哈希(20 个字节)结束。

PKCS#12 并不那么容易检测到。您必须将其解析为 ASN.1 结构(请参阅RFC 7292 https://www.rfc-editor.org/rfc/rfc7292):

PFX ::= SEQUENCE {
   version    INTEGER {v3(3)}(v3,...),
   authSafe   ContentInfo,
   macData    MacData OPTIONAL
}

如果文件无法解析为上述 ASN.1 结构,则它不是 PKCS#12。

有关 PKCS12 格式的更易于理解的说明检查这里 http://www.emc.com/collateral/white-papers/h11301-pkcs-12v1-1-personal-information-exchange-syntax-wp.pdf.

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

JKS、BKS 和 PKCS12 文件格式 的相关文章

随机推荐

  • 使用 slick 3.0.0-RC1 无法在 TableQuery 上找到方法结果

    我正在尝试 Slick3 0 0 RC1我遇到了一个奇怪的问题 这是我的代码 import slick driver SQLiteDriver api import scala concurrent ExecutionContext Imp
  • 调整输入字段的宽度以适应其输入

  • Set 内元素的 Hibernate 标准

    我有一个实体 其中包含一组另一个实体 Entity1 包含集合EntityTwos 我想为entityTwos 中的 id 字段创建搜索条件 我搜索过 但没有得到任何答案 有人有主意吗 谢谢 斯里 很容易 就像是 criteria crea
  • 使用 ggplot_build 和 ggplot_gtable 后使用 ggsave 保存图形

    我正在通过更改 ggplot build 生成的数据来修改使用 ggplot 构建的图表 原因类似于包括 geom boxplot 中填充美学中使用的缺失因子水平的空间 https stackoverflow com questions 1
  • 没有@Id的休眠/持久化

    我有一个数据库视图 它生成的结果集没有真正的主键 我想使用 Hibernate Persistence 将此结果集映射到 Java 对象 当然 因为没有PK 所以我不能用 Id 部署时 Hibernate 抱怨缺少 Id 我该如何解决这个问
  • 如何使用 javascript 从 UUID v1 (TimeUUID) 中提取时间戳?

    我使用 Cassandra DB 和 Nodejs 的 Helenus 模块来操作它 我有一些包含 TimeUUID 列的行 如何在javascript中从TimeUUID获取时间戳 这个库 UUID 至今 https github com
  • PDOException SQLSTATE[HY000] [2002] 我的本地计算机上的连接超时

    最近我从服务器导入了代码 但本地代码无法连接到远程 mysql 数据库 所以我有两个问题 我可以访问我的远程数据库吗 如果是 为什么我的代码不起作用 如果没有 有没有办法绕过这个问题 我不想复制在本地计算机上运行的 mysql 数据库 我的
  • 可以在不填充数据的情况下创建 BigQuery 表/架构吗?

    是否可以在不先用数据填充的情况下创建表模式 最好使用 Google 的 python 客户端 谷歌的文档似乎没有提供明确的是或否的答案 他们建议创建一个表 https cloud google com bigquery docs table
  • 如何刷新幻灯片放映中的活动幻灯片?

    基于我的最后一个问题 https stackoverflow com questions 14503054 change the image of an image shape我得到了正确的代码来更改形状的图像 不幸的是 这不会更新活动演示
  • Windows 内存映射文件

    我正在尝试研究 Windows 内核在内存映射文件 虚拟内存方面的行为 具体来说 我感兴趣的是确定内存映射文件的内容 由 Windows 刷新到磁盘的频率以及 Windows 使用什么标准来决定是时候这样做 我在网上做了一些研究 除了 MS
  • Django 找不到记录器“城市”的处理程序

    我正在尝试设置 Django Citieshttps github com coderholic django cities https github com coderholic django cities使用以下命令 sudo pyth
  • 文本末尾的空格在右对齐 UITextField 中不可见

    我有一个右对齐的UITextField 最初编辑时 文本末尾不会出现空格 我用这个解决了this https stackoverflow com q 19569688 1971013 替换 与不间断的 u00a0 然而 上面仅在编辑文本字段
  • 在初始化程序中重新加载命名空间常量

    今天遇到一个有趣的情况 我不确定如何解决 给定一个带有初始化器的 Rails 应用程序 file config initializers integrations rb Integrations CONFIGS key gt value f
  • Intel 64 和 IA-32 上的 MESI 有何意义

    MESI 的要点是保留共享内存系统的概念 然而 对于存储缓冲区 事情就变得复杂了 一旦数据到达 MESI 实现的缓存 下游内存就会保持一致 然而 在此之前 每个核心可能对内存位置 X 中的内容存在分歧 具体取决于每个核心的本地存储缓冲区中的
  • 如何使用 JDA 在 Discord 服务器(不是用户/机器人 DM)中创建私有频道:Java Discord API

    我试图让机器人在公会中创建一个私人频道 但在 JDA 文档中找不到任何允许这种情况发生的内容 调用时返回的 ChannelActioncreateTextChannel 在返回中明确将文本作为通道类型 return new ChannelA
  • 如何获取列中每个不同值的计数? [复制]

    这个问题在这里已经有答案了 我有一个名为 posts 的 SQL 表 如下所示 id category 1 3 2 1 3 4 4 2 5 1 6 1 7 2 每个类别编号对应一个类别 我将如何计算每个类别出现在帖子中的次数一条 SQL 查
  • 除法的时间复杂度是多少?

    我使用除法算法 根据https en wikipedia org wiki Computational complexity of mathematical operations https en wikipedia org wiki Co
  • iPython 笔记本上的内联数学模式

    在 iPython 笔记本中 我如何编写数学公式 例如r 2在一行中 乳胶词汇中的内联数学模式 IE 打印公式的时候可以不换行吗 如果像在 LaTeX 中一样 它应该是 r 2 但它不起作用 感谢您的帮助 在 Markdown 单元格中 您
  • 如何编辑 Mailchimp 自动化电子邮件的纯文本版本?

    我已经使用 Mailchimp 运行自动化工作流程一段时间了 其中有一个简单的欢迎新闻通讯 自动化电子邮件编辑器仅允许我编辑电子邮件的 HTML 版本 并自动生成基于文本的版本 但是 它仅在首次创建电子邮件时生成纯文本版本 从那时起 我已经
  • JKS、BKS 和 PKCS12 文件格式

    我正在设置一个无头服务器 该服务器使用用户提供的数据 JS CSS HTML 密钥库 为 Android 构建 Phonegap 混合应用程序 我想进行一些基本的客户端检查 以确保上传的密钥库有效 对于 JKS 文件 我发现可以通过确保提供