在 RSA 中将八位字节字符串转换为非负整数是什么意思?
what does it mean to convert octet strings to nonnegative integers in RSA?
我正在尝试根据此规范实施 RSA PKCS #1
http://www.emc.com/emc-plus/rsa-labs/pkcs/files/h11300-wp-pkcs-1v2-2-rsa-cryptography-standard.pdf
但是,我不确定第9页中OS2IP的用途是什么。假设我的消息是整数258,私钥是e。还假设我们除了 OS2IP 之外不做任何其他格式化。
所以我将把258转换成八位字节串存入char buf[2] = {0x02, 0x01}。现在在我计算指数 258^e 之前。我需要调用 OS2IP 来反转字节顺序并将其保存到 buf_new[2] = {0x01, 0x02}。现在 0x0102 = 258。
但是,如果我最初将 258 存储为 buf[2] = {0x01, 0x02}。那么就不需要调用 OS2IP,对吗?或者这是我必须将其保存到 {0x02, 0x01} 中的约定?
OS2IP 将一个非负整数编码为它的 big endian 表示。
However, if I initially stored 258 as buf[2] = {0x01, 0x02}. Then there is no need to call OS2IP, correct?
没错。 258 已经以大端编码,尽管根据您选择的长度 (!=2),您可能会丢失前导零。
or is this the convention that I have to save it into {0x02, 0x01}?
我不明白你的问题:/
我正在尝试根据此规范实施 RSA PKCS #1 http://www.emc.com/emc-plus/rsa-labs/pkcs/files/h11300-wp-pkcs-1v2-2-rsa-cryptography-standard.pdf
但是,我不确定第9页中OS2IP的用途是什么。假设我的消息是整数258,私钥是e。还假设我们除了 OS2IP 之外不做任何其他格式化。
所以我将把258转换成八位字节串存入char buf[2] = {0x02, 0x01}。现在在我计算指数 258^e 之前。我需要调用 OS2IP 来反转字节顺序并将其保存到 buf_new[2] = {0x01, 0x02}。现在 0x0102 = 258。
但是,如果我最初将 258 存储为 buf[2] = {0x01, 0x02}。那么就不需要调用 OS2IP,对吗?或者这是我必须将其保存到 {0x02, 0x01} 中的约定?
OS2IP 将一个非负整数编码为它的 big endian 表示。
However, if I initially stored 258 as buf[2] = {0x01, 0x02}. Then there is no need to call OS2IP, correct?
没错。 258 已经以大端编码,尽管根据您选择的长度 (!=2),您可能会丢失前导零。
or is this the convention that I have to save it into {0x02, 0x01}?
我不明白你的问题:/