当前位置: 首页 > 面试题库 >

SHA256withRSA的作用和顺序是什么?

胥玮
2023-03-14
问题内容

关于密码学和诸如此类的事情,我是一个新手。我不知道(也不想知道)SHA256和RSA的详细信息。我“知道”他们在做什么,而不是他们如何做,现在就足够了。

我想知道“
SHA256withRSA”算法(如果可以这样称呼)的实际作用和顺序。例如,它是否先使用SHA256对数据进行哈希处理,然后使用RSA对其进行加密,或者反之亦然?

我问的原因是因为我想做java的等效项:

Signature.getInstance("SHA256withRSA")
signature.initSign(privateKey); //privateKey == a key extracted from a .p12 file

在iOS上的Objective-
C中。而且我似乎找不到任何可以做到这一点的东西,因此我想问一下,我可以仅对数据进行散列(SHA256),然后对其进行加密(RSA)(反之亦然),得到相同的行为吗?

建议做这种事情的解决方案是什么?

谢谢!

编辑:我没有提到我使用通过执行以下操作获得的私钥对数据进行签名:

KeyStore keystore = KeyStore.getInstance("PKCS12");
keystore.load(new FileInputStream(new File(filename)), password.toCharArray());
PrivateKey privateKey = (PrivateKey)keystore.getKey(alias, password.toCharArray());

其中文件名例如:“ / somewhere / mykey.p12”。


问题答案:

"SHA256withRSA"在使用SHA256计算数据散列后,以正式名称RSASSA-
PKCS1-v1_5
实现PKCS#1 v1.5填充和模幂运算。

因此,一般顺序为:

  1. 散列
  2. 填充哈希以生成签名;
  3. 使用私有指数和模数的模幂。

用于加密和签名生成的填充是不同的,因此使用加密可能会导致错误的签名。

PKCS#1 v1.5填充方案已被PSS取代。对于新协议,建议改用PSS方案。对于RSA,存在非常易读的公共标准。该标准也已用作RFC
3447的基础:公钥密码标准(PKCS)#1:RSA密码规范2.1版(基本上是副本)。

关于iOS中的填充,请检查Thomas
Pornin的答案。基本上,您应该创建SHA-256哈希,为静态数据块(在PKCS#1规范中定义)添加前缀,然后使用SecKeyRawSignusing
kSecPaddingPKCS1

为了方便起见,PKCS#1定义的数据块需要以SHA-256的十六进制表示法作为前缀(在标准文档中很难找到,请参见9.2节):

30 31 30 0D 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20

笔记:

  • 上述步骤不包括从字节到整数的转换,反之亦然。原始RSA操作的结果通常会转换为无符号大尾数编码,其字节大小与模数相同(通常与密钥大小相同,因为密钥大小已经是8的倍数)。这些转换在RFC中称为I2OSP和OS2IP。


 类似资料:
  • 我正在尝试制作一个2D游戏引擎,但我似乎无法让碰撞一直起作用(通常情况下,物体会卡住或相互穿过)。在不太深入代码的情况下,下面是我更新的顺序。 获取用户输入并更新玩家速度 保存每个实体的位置,然后移动速度/更新间隔单位 检查每个可移动实体是否与所有其他实体发生碰撞。如果图元与某物碰撞,则会将其移动到其旧位置,并为两个碰撞图元设置新的速度。 碰撞冲量在此函数中计算: 这是检查碰撞的函数: 几天来,我

  • 问题内容: 假设我的web.xml中有以下内容 如果请求以/XYZ/abc.do的形式出现,过滤器的调用顺序是什么?为什么? 问题答案: 按照其映射在web.xml中定义的顺序 如果使用注释(),则顺序似乎未定义 -您仍必须在web.xml中声明条目。

  • 问题内容: 假设我们有一个标准的流操作方法链: JLS中是否有保证将流操作应用于列表元素的顺序? 例如,是否保证: 将过滤谓词应用于不会在将过滤谓词应用于之前进行。 将映射功能应用于之前,将不会应用映射功能。 会在之前印刷吗? 注意 :我在这里专门谈论, 而不是 在预期并行执行映射和过滤之类的操作的地方。 问题答案: 您想知道的一切都可以在JavaDoc中找到。 流可能具有也可能没有定义的遇到顺序

  • 问题内容: 我试图弄清楚为什么我的一个css类似乎覆盖了另一个(而不是相反) 这里我有两个CSS类 在我看来,我打电话给 字体(重叠元素)显示为10px而不是20px-有人可以解释为什么会这样吗? 问题答案: 有几条规则(按此顺序应用): 内联css(html样式属性)覆盖样式标签和css文件中的css规则 较具体的选择器优先于较不具体的选择器 如果两个规则具有相同的特异性,则稍后出现在代码中的规

  • 本文向大家介绍什么是Python中的顺序表,包括了什么是Python中的顺序表的使用技巧和注意事项,需要的朋友参考一下 1、顺序表介绍 顺序表是最简单的一种线性结构,逻辑上相邻的数据在计算机内的存储位置也是相邻的,可以快速定位第几个元素,中间不允许有空,所以插入、删除时需要移动大量元素。顺序表可以分配一段连续的存储空间Maxsize,用elem记录基地址,用length记录实际的元素个数,即顺序表

  • 我正在做一个关于Spring Boot 1.5的项目。它具有以下类型的配置类: 这在Spring Boot 1.5中运行正常,但当我升级到Spring Boot 2时,它不再工作,应用程序将不会启动,出现异常“找不到类型DependencyA的bean”。我想这可能是因为bean不是在Spring尝试注入依赖项时创建的,因此,作为“黑客”,在依赖项注入中添加了@Lazy。这起作用了。 鉴于此,配置