Java 中 PKCS#5 PBKDF1 的算法名称是什么?

2024-01-09

我在使用密码学方面有几个问题。我正在使用 AES。

问题一:

我正在尝试使用SecretKeyFactory班级在 .我正在尝试获取与 PBKDF1 PKCS#5 相关的实例。我是密码学新手。我在网上尝试过,但找不到任何此类算法。确实支持。我想要这样的东西。

SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF1Pkcs#5");
KeySpec spec = new PBEKeySpec(password, salt, 1, 128);

问题2:

上面两行代码与 Crypto++ 代码中的以下代码行执行相同的操作吗?

PKCS5_PBKDF1 <MD5> fn;
fn.DeriveKey(key, MD5::DIGESTSIZE, 0, key.getBytes(), salt.getBytes(), salt.size(), PBKDF1_ITERATIONS, time_in_seconds);

如果没有,有人可以提供一些可以模仿上述 C++ 代码行的功能的东西。

Thanks


回复:问题1

Per the SecretKeyFactory 的 Java 6 API 文档 http://docs.oracle.com/javase/6/docs/api/javax/crypto/SecretKeyFactory.html,

应用程序开发人员应参阅其提供商的文档,以了解generateSecret 和getKeySpec 方法支持哪些关键规范。例如,“SunJCE”提供商提供的 DES 密钥工厂支持 DESKeySpec 作为 DES 密钥的透明表示,并且该提供商的三重 DES 密钥的密钥工厂支持 DESedeKeySpec 作为三重 DES 密钥的透明表示。

如果我们看一下SunJCE 提供商文档 http://docs.oracle.com/javase/1.5.0/docs/guide/security/jce/JCERefGuide.html对于 PKCS,我们看到...

PBEWithMD5AndDES:基于密码的加密算法,定义如下:RSA Laboratories,“PKCS #5:基于密码的加密标准”1.5 版,1993 年 11 月。请注意,该算法意味着 CBC 作为密码模式,PKCS5Padding 作为填充方案,并且不能与任何其他密码模式或填充方案一起使用。

回复:问题2

在同一文档的部分中使用基于密码的加密,您将找到以下示例代码。请记住,示例代码使用静态盐,但安全实现将在用户每次更改密码时生成随机盐。

PBEKeySpec pbeKeySpec;
PBEParameterSpec pbeParamSpec;
SecretKeyFactory keyFac;

// Salt
byte[] salt = {
    (byte)0xc7, (byte)0x73, (byte)0x21, (byte)0x8c,
    (byte)0x7e, (byte)0xc8, (byte)0xee, (byte)0x99
};

// Iteration count
int count = 20;

// Create PBE parameter set
pbeParamSpec = new PBEParameterSpec(salt, count);

// Prompt user for encryption password.
// Collect user password as char array (using the
// "readPasswd" method from above), and convert
// it into a SecretKey object, using a PBE key
// factory.
System.out.print("Enter encryption password:  ");
System.out.flush();
pbeKeySpec = new PBEKeySpec(readPasswd(System.in));
keyFac = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey pbeKey = keyFac.generateSecret(pbeKeySpec);

// Create PBE Cipher
Cipher pbeCipher = Cipher.getInstance("PBEWithMD5AndDES");

// Initialize PBE Cipher with key and parameters
pbeCipher.init(Cipher.ENCRYPT_MODE, pbeKey, pbeParamSpec);

// Our cleartext
byte[] cleartext = "This is another example".getBytes();

// Encrypt the cleartext
byte[] ciphertext = pbeCipher.doFinal(cleartext);

其他算法

再次,来自同一页面。真的,我建议您通读整篇文章,因为它也可能会回答您的其他问题

PBEWithAnd 或 PBEWithAnd:用于 PKCS #5 基于密码的加密的密钥工厂,其中 是消息摘要, 是伪随机数函数,是加密算法。示例:PBEWithMD5AndDES(PKCS #5,v 1.5)和 PBEWithHmacSHA1AndDESede(PKCS #5,v 2.0)。注意:它们都仅使用每个密码字符的低 8 位。

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

Java 中 PKCS#5 PBKDF1 的算法名称是什么? 的相关文章

  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • ActiveMQ JNDI 查找问题

    尝试使用 JNDI 运行以下 ActiveMQ http activemq apache org jndi support html http ActiveMQ 20JNDI 并且我的 jboss server node lib 文件夹中有
  • 如何使用 Java 在 selenium webdriver 中打开新选项卡或如何使用使用 selenium webdriver 的操作类在 selenium 中按 ctrl +T [重复]

    这个问题在这里已经有答案了 如何使用 Java 在 Selenium Webdriver 中按 CTRL T 或者 如何使用 Java 在 selenium webdriver 中打开新选项卡 简单步骤 1 打开google com 不必触
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 是否使用 C# 数据集? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 C 中的数据集概念有点困惑 编码 ASP NET 站点 但这并不重要 在我的阅读中 我了解到它们 本质上 用作我的应用程序和我的
  • 无法连接到docker中的elasticsearch容器

    我正在尝试使用 docker 的官方 elasticsearch 镜像 我遵循了本指南 https www elastic co guide en elasticsearch reference current docker html但是当
  • 开发者环境-如何调用/消费其他微服务

    背景 我的环境 Java Play2 MySql 我在 Play2 gt S1 S2 S3 上编写了 3 个无状态 Restful 微服务 S1 消耗来自 S2 和 S3 的数据 因此 当用户点击 S1 时 该服务会异步调用 S2 S3 合
  • Spring - 如何在不匹配列名的情况下使用 BeanPropertyRowMapper

    我正在开发一个应用程序 该应用程序已使用行映射器从纯 JDBC 转换为 Spring 模板 我遇到的问题是数据库中的列与属性名称不匹配 这阻止我使用BeanPropertyRowMapper容易地 我看到一些关于在查询中使用别名的帖子 这会
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • 模板类的模板构造函数的 C++ 显式模板特化

    我有一个像这样的课程 template
  • C++ 对象用 new 创建,用 free() 销毁;这有多糟糕?

    我正在修改一个相对较大的 C 程序 不幸的是 并不总是清楚我之前的人使用的是 C 还是 C 语法 这是在一所大学的电气工程系 我们 EE 总是想用 C 来做所有事情 不幸的是 在这种情况下 人们实际上可以逃脱惩罚 但是 如果有人创建一个对象
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset

随机推荐

  • lambda 和 LINQ 之间的区别? [复制]

    这个问题在这里已经有答案了 有人可以解释一下 lambda 和 linq 之间的区别吗 请不要向我指出其他 stackexchange 答案或琐碎的解释 我已经检查了其中的大部分 它们非常令人困惑 这些天我使用了一些 LINQ 我相信 其表
  • 更改来自 Lambda (Node.js) 的 Cloudwatch 日志的日志格式

    If I do console log message 在我的代码中 它在 Cloudwatch 中显示为 2017 03 16T18 58 21 823Z 863c835c 0a7a 11e7 9140 e5018d6e5029 mess
  • Hibernate Session 不使用 JpaTransactionManager 事务

    我正在开发一个使用 Spring 框架 4 3 3 RELEASE 和 Hibernate 5 2 3 Final 的项目 并且我开始转向使用 Spring Data JPA 我刚刚迁移了LocalSessionFactoryBean wi
  • DialogFragment 中未调用 OnCancelListener

    我有一个简单的AlertDialog显示一些项目的列表 单击其中一个项目后 所单击的项目将传回封闭的项目Activity 我还想在用户取消对话框时执行一些默认处理 使用返回键 更具体地说 在这种情况下 我想将空字符串传递给活动 但是 如果我
  • 在另一个用户上下文中执行代码

    我有一个应用程序 其清单需要以管理员身份运行 但该应用程序的一部分是使用 WNetAddConnection2 映射驱动器 我认为由于凭据等原因 它需要在正常用户上下文中运行 有没有办法执行此操作普通用户上下文中的一些代码 无需创建单独的进
  • 在 CentOS 上安装 psycopg2 时遇到问题

    我正在尝试在 CentOS 上安装 psycopg2 我遵循了这方面的所有内容tutorial http thebuild com blog 2009 10 17 wordpress to djangopostgresql part 3 i
  • 如何使用多个索引从 NumPy 数组中获取值

    我有一个 NumPy 数组 如下所示 arr np array 100 10 200 42 4 14 89 00 34 55 1 12 如何通过索引从该数组中获取多个值 例如 如何获取索引位置1 4 5处的值 我正在尝试这样的事情 这是不正
  • 使用资源设置窗口背景颜色

    我需要使用资源来设置 WPF 应用程序中主窗口的颜色 由于资源声明位于窗口声明之后 我正在导入资源字典 因此我无法使用Background财产在Window目的 所以 我想我应该这样设置背景
  • 如何使用 LAG() 忽略 BigQuery 中的空值?

    使用时LAG 在 BigQuery 标准 SQL 中 https cloud google com bigquery docs reference standard sql functions and operators 如何跳过NULL值
  • 位置固定元素

    我真的被 HTML5 的一个小问题困扰了 我只是想定位一个固定元素 我有一个 jpg 作为标题 在下面我有一个名为 menu 的 div 其中包含导航 我一直在尝试通过 jss 和许多 css 规则使这个 div 菜单固定 因为当我向下滚动
  • 在 R 中重写这个列表理解

    gt gt gt x y for x y in zip range 3 1 11 111 0 11 222 不是这样的 gt data frame 0 2 c 1 11 111 X0 2 c 1 11 111 1 0 1 2 1 11 3
  • MassTransit 与 RabbitMQ:消息何时移至错误队列

    我正在使用 RabbitMQ 版本 3 0 2 我在错误队列中看到接近 1000 条消息 我想知道 消息在什么时候被移至错误队列 有没有办法知道为什么某个消息被移动到错误队列 有什么方法可以将消息从错误队列移动到正常队列吗 谢谢 a 无法反
  • 为什么我应该在这个程序中使用 fflush(stdin) ?

    我知道它是用来清理键盘缓冲区的 但是我不明白何时 为什么需要使用它或者我是否真的需要 例如 在我为班级编写的这段代码中 只有当我输入fflush stdin 之后立即进入主函数while 我只知道这一点 因为教授在我向他展示错误后告诉我这样
  • Eclipse 隐形编辑器

    我有日食朱诺 我不知道如何 但我在 Eclipse 中的编辑器现在是 隐形的 我所说的不可见是指编辑器窗格不在可见窗口中 我不是 Eclipse 的新手 我知道您可以最小化编辑器或最大化不同的面板 但事实并非如此 编辑器所在的空白区域甚至没
  • @import 与 #import - iOS 7

    我正在尝试一些新的 iOS 7 功能 并使用 WWDC 视频 在 iOS 上实现引人入胜的 UI 中讨论的一些图像效果 为了在会话的源代码中产生模糊效果 UIImage通过导入 UIKit 的类别进行扩展 如下所示 import UIKit
  • 如何借用字段进行序列化但在反序列化时创建它?

    我有一个这样的结构 derive Serialize Deserialize struct Thing pub small header Header pub big body Body 我想把这个连载Thing通过网络发送 我已经有一个B
  • 在 Eclipse 文本编辑器中,如何将段落重新格式化/填充/对齐为 80 个字符宽?

    在 Eclipse 中编辑文本文件 例如 README 文件 时 我还没有找到一种方法让编辑器重新格式化文本段落 以便它们适合合理的宽度 通常为 80 个字符 这看起来应该是一件很平常想做的事情 但是我还没有找到 有人可以帮忙吗 请注意 我
  • Android - 两个设备之间的通信

    安装在两台设备上的 Android 应用程序相互通信的最佳方式是什么 设备可以直接连接而不使用短信吗 根据您的要求和设置 您有多种选择 如果您的设备彼此距离非常近 最多约 10 米 您可以按照 Derek 的建议使用蓝牙进行通信 如果您的设
  • jQuery - 等待函数返回值

    我有一个 jquery 函数 用于使用 ajax 请求发送电子邮件 function sendMail from to subject message var datastr from from to to subject subject
  • Java 中 PKCS#5 PBKDF1 的算法名称是什么?

    我在使用密码学方面有几个问题 我正在使用 AES 问题一 我正在尝试使用SecretKeyFactory班级在 我正在尝试获取与 PBKDF1 PKCS 5 相关的实例 我是密码学新手 我在网上尝试过 但找不到任何此类算法 确实支持 我想要