gpt4 book ai didi

encryption - 散列RSA key 的标准方法?

转载 作者:行者123 更新时间:2023-12-04 06:21:47 25 4
gpt4 key购买 nike

创建 RSA 公钥的哈希(sha-1 或 MD5)的算法是什么?有没有标准的方法来做到这一点?散列只是模数,两者的字符串相加然后取散列?通常使用 SHA-1 还是 MD5?

我想用它来确保我得到了正确的 key (让发件人发送一个散列,我自己计算它),并记录所说的散列,所以我总是知道我在加密有效负载时使用了哪个确切的 key 。

最佳答案

基于 OpenSSH 源代码,为 RSA key 生成指纹的方法是将 n 和 e 从公钥转换为大端二进制数据,连接数据,然后使用给定的散列函数散列该数据。

OpenSSH 源代码的部分内容如下。添加评论是为了澄清正在发生的事情。

// from key_fingerprint_raw() in key.c
switch (k->type) {
case KEY_RSA1:
// figure out how long n and e will be in binary form
nlen = BN_num_bytes(k->rsa->n);
elen = BN_num_bytes(k->rsa->e);
len = nlen + elen;
// allocate space for n and e and copy the binary data into blob
blob = xmalloc(len);
BN_bn2bin(k->rsa->n, blob);
BN_bn2bin(k->rsa->e, blob + nlen);

...

// pick a digest to use
switch (dgst_type) {
case SSH_FP_MD5:
md = EVP_md5();
break;
case SSH_FP_SHA1:
md = EVP_sha1();
break;

...

// hash the data in blob (n and e)
EVP_DigestInit(&ctx, md);
EVP_DigestUpdate(&ctx, blob, len);
EVP_DigestFinal(&ctx, retval, dgst_raw_length);

来自 BN_bn2bin manual page :
BN_bn2bin(a, to)转换 a 的绝对值成大端格式并将其存储在 to . to必须指向 BN_num_bytes(a)字节的内存。

关于encryption - 散列RSA key 的标准方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6460845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com