Tag: rsa

如何生成大的随机数C.

我正在寻找一种在C …(100000000 – 999999999)中生成大约2 ^ 64的大随机数的方法,以用于公钥加密算法(如p和q)。 我不想生成小于2 ^ 64的数字(即小于100000000)。 有什么可以帮我做到这一点吗?

使用C例程和openssl dgst,rsautl命令时的不同签名

我使用以下语句来创建RSA公钥和私钥。 openssl genrsa -out ksign_private.pem 1024 openssl rsa -in ksign_private.pem -pubout> ksign_public.pem 然后我有程序使用openssl libcrypto中的PEM_read_RSAPrivateKey,EVP_PKEY_assign_RSA,EVP_SignInit,EVP_SignUpdate,EVP_SignFinal函数来生成签名文件。 我还有例程validation可以使用PEM_read_RSA_PUBKEY,EVP_PKEY_assign_RSA,EVP_VerifyInit,EVP_VerifyUpdate,EVP_VerifyFinalvalidation签名。 这些例程的源代码如下所示。 使用这些function时,我可以创建SHA1签名,使用私钥加密,并使用公钥解密。 但是我试图使用相同的数据文件,使用openssl rsautl使用相同的私有公钥,而openssl rsautl创建的签名则大不相同。 openssl dgst -sha1 -binary testfile.sha1 openssl rsautl -sign -in testfile.sha1 -inkey ksign_private.pem -keyform PEM -out testfile.sig 在使用openssl rsautl或dgst命令时,任何人都可以告诉我使用错误的选项吗? #include #include #include #include #include #include #include #include #include #include #include #include #include #include int ksignEvpSign(FILE * […]

为什么我无法使用PEM_read_RSAPublicKey读取openssl生成的RSA pub密钥?

我正在尝试读取使用openssl生成的RSA公钥,如下所示: Private Key: openssl genrsa -out mykey.pem 1024 Public Key afterwards: openssl rsa -in mykey.pem -pubout > somewhere.pub 然后我试着读: FILE *keyfile = fopen(“somewhere.pub”, “r”); RSA *rsa_pub = PEM_read_RSAPublicKey(keyfile, NULL, NULL, NULL); //rsa_pub == NULL! 当我正在阅读私钥时,它可以工作 FILE *keyfile = fopen(“mykey.pem”, “r”); RSA *rsa_pri = PEM_read_RSAPrivateKey(keyfile, NULL, NULL, NULL); //all good 有任何想法吗? 我已经读过openssl生成RSA公钥的X509密钥。 但我甚至无法加载X509发布密钥。 谢谢

读取和写入C中的pem文件的rsa键

我正在编写一个C程序来为RSA生成密钥并将它们写入文件然后从中读取。 作业要求我以openssl格式生成文件。 所以,我选择了PEM。 现在,我有以下创建文件的function rsa = RSA_new(); // These 3 keys are generated beforehand rsa->e = e; rsa->n = n; rsa->d = d; fp = fopen(pubkey_file, “w”); if(!PEM_write_RSAPublicKey(fp, rsa)) { printf(“\n%s\n”, “Error writing public key”); } fflush(fp); fclose(fp); fp = fopen(privkey_file, “w”); // pRsaKey = EVP_PKEY_new(); // EVP_PKEY_assign_RSA(pRsaKey, rsa); if(!PEM_write_RSAPrivateKey(fp, rsa, NULL, 0, 0, NULL, […]