gpt4 book ai didi

C 加密 : Unable to check if number is prime using libgcrypt

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:22 25 4
gpt4 key购买 nike

我正在使用 libgcrypt 函数 gcry_prime_check 来测试数字 3 是否为素数。根据我的函数,结果证明 3 不是质数。我做错了什么?

这是我的代码

#include <gcrypt.h>
#include <stdio.h>

int main(void)
{

gcry_mpi_t cript_prime;
gcry_error_t err;
char buffer[8] = {0};
char number[8] = {0};


printf("%s\n", gcry_check_version ( NULL ) );
gcry_control( GCRYCTL_INIT_SECMEM, 16384, 0 );

cript_prime = gcry_mpi_new(16);

strcpy(number,"3");
gcry_mpi_scan(&cript_prime,GCRYMPI_FMT_USG,number,sizeof(number),NULL);

gcry_mpi_print(GCRYMPI_FMT_USG,buffer,sizeof(buffer),NULL,cript_prime);

printf("The number tested is: %s\n",buffer);

err = gcry_prime_check(cript_prime,4);

if(err)
{
printf("%s\n",gcry_strerror(err));
}

gcry_mpi_release(cript_prime);

return 0;
}

这是输出

1.4.4
The number tested is: 3
Number is not prime

此外,关于使用 libgcrypt 的良好教程的链接将是一个很大的好处。谢谢

编辑:

好的,我设法使用 gcry_prime_generate 生成了一个素数,并将该值复制到 number 中。原来它没有通过 prime 检查。但是,当您直接将 prime generate 的 mpi 输出传递给 prime check 函数时……它通过了!!

最佳答案

这是一个错误。与大多数质数测试一样,它会在进行更昂贵的测试之前测试小质数的整除性。不幸的是,如果您的质数是这些值之一,它会被报告为可整除(本身) - 因此是合数。

由于 libgcrypt 的重点是密码应用,所以这么小的素数没有任何用处。虽然它很草率,但不需要太多时间来纠正。

关于C 加密 : Unable to check if number is prime using libgcrypt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11464425/

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