Tag: rsa

如何将pem公钥转换为openssl RSA *结构

假设我必须像这样公开pem键 —–BEGIN PUBLIC KEY—– MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o6gJy8UtmIbkcpnk O3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2 eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1 QWPdspTBKcxeFbccDwIDAQAB —–END PUBLIC KEY—– 我想使用openssl int RSA_public_decrypt(int flen, const unsigned char *from, unsigned char *to,RSA *rsa, int padding) 。 如何将pem键转换为RSA *rsa结构? 仅供参考:我不能使用BIO,因为我只想将openssl移植到没有UNIX文件系统的引导加载程序中。 我能做的唯一方法是将公钥转换为C数组。

如何将公钥存储为c数组

我一直在寻找这个问题的答案,所以我可能会发布我发现的内容。 我正在使用openssl来签署和validation许可证,使用私钥进行签名和公钥进行validation。 因为我要将公钥发送给客户进行validation,所以我无法将其提供给他并要求输入密钥的路径,因为他可以使用自己的私钥/公钥更改公钥并加密消息。 解决方案:将公钥存储在C程序中作为数组。 现在我需要更改我的公钥读取代码: EVP_PKEY *public_key = NULL; public_key_fd = fopen( public_key_path, “r” ); if ( !public_key_fd ) // something went wrong PEM_read_PUBKEY( public_key_fd, &public_key, NULL, NULL ); fclose( public_key_path ); 使用字符串而不是文件的东西。

没有填充的OpenSSL RSA加密无法正确加密

我们尝试使用“RSA_public_encrypt()”方法(Symbian上的openSSL)执行RSA加密,但我们并没有取得成功。 加密本身成功,但加密文本(我们尝试匹配哈希)不是它应该是的(在其他平台上,我们检查了这是我们现在它正常工作,我们在这里得到不同的值)。 我们认为这可能是由于输入没有以正确的格式提供给“RSA_public_encrypt()”方法。 代码: #define RSA_E 0x10001L void Authenticator::Test(TDesC8& aSignature, TDesC8& aMessage) { RSA *rsa; char *plainkey; char *cipherkey; int buffSize; // create the public key BIGNUM * bn_mod = BN_new(); BIGNUM * bn_exp = BN_new(); const char* modulus2 = “137…859”; // 309 digits // Convert to BIGNUM int len = BN_dec2bn(&bn_mod, modulus2); // with […]

没有依赖项的小型RSA或DSA库

RSA或DSA是否有一个小型库,没有GMP或OpenSSL等依赖项? (用C或Asm编写)

将RSA加密参数从CRT(中国剩余定理)映射到.NET格式

我需要使用C#实现RSA加密/解密 我有一个包含以下参数的私钥: mod n , exponent , p , q , dP , dQ和(p -1 mod q) 以上参数用中文余数算法解释 但是,RSA的C#.NET实现具有以下不同的参数集: Modulus , Exponent , P , Q , DP , DQ , D , InverseQ 当我试图将数据从CRT映射到DOTNET ,我收到错误Bad Data错误 对于p , q , dP和dQ ,映射是显而易见的,但关于其他参数我不确定。 如果我可以获得映射这些参数的帮助,那就太棒了

OpenSSL RSA:无法加密/解密长度超过16个字节的消息

我正在研究一个使用OpenSSL进行基本RSA加密和解密的简单程序。 它对于小消息(<16字节)工作正常,但对于任何事情都失败了。 我知道公钥加密的局限性在于您无法加密任何比密钥大小更长的内容。 在我的情况下,我使用的是1024位密钥,因此我应该使用128字节(由于填充可能会略微减少),对吗? 如果是这样,那不是我正在经历的。 这是我的程序的输出,有15个字节: Generating RSA keypair…done. Message to encrypt: 0123456789ABCDE 16 bytes encrypted Decrypted message: 0123456789ABCDE 并且有16个字节: Generating RSA keypair…done. Message to encrypt: 0123456789ABCDEF 16 bytes encrypted 140153837057696:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:467: Decrypted message: (null) 似乎无论如何,只加密了16个字节。 我的加密function(通过修复更新): unsigned char* rsa_seal(EVP_PKEY *pub_key, unsigned char *msg, size_t **enc_msg_len, unsigned char **sym_key, int *sym_key_len, unsigned char […]

使用OpenSSL加密和解密错误0x0407106B

我在C中编写一个例程,用公钥读取base64字符串并继续加密字符串。 我也测试相同的字符串的解密,但我在尝试解码时得到错误0x0407106B: $ openssl errstr 0x0407106B error:0407106B:rsa routines:RSA_padding_check_PKCS1_type_2:block type is not 02 这是代码 #include #include #include #include #include #include //#define PADDING RSA_PKCS1_OAEP_PADDING #define PADDING RSA_PKCS1_PADDING //#define PADDING RSA_NO_PADDING main() { // public key char *b64_pKey = “—–BEGIN PUBLIC KEY—–\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCp2w+8HUdECo8V5yuKYrWJmUbL\ntD6nSyVifN543axXvNSFzQfWNOGVkMsCo6W4hpl5eHv1p9Hqdcf/ZYQDWCK726u6\nhsZA81AblAOOXKaUaxvFC+ZKRJf+MtUGnv0v7CrGoblm1mMC/OQI1JfSsYi68Epn\naOLepTZw+GLTnusQgwIDAQAB\n—–END PUBLIC KEY—–\n”; // private key char *b64priv_key = “—–BEGIN RSA PRIVATE KEY—–\nMIICXAIBAAKBgQCp2w+8HUdECo8V5yuKYrWJmUbLtD6nSyVifN543axXvNSFzQfW\nNOGVkMsCo6W4hpl5eHv1p9Hqdcf/ZYQDWCK726u6hsZA81AblAOOXKaUaxvFC+ZK\nRJf+MtUGnv0v7CrGoblm1mMC/OQI1JfSsYi68EpnaOLepTZw+GLTnusQgwIDAQAB\nAoGBAKDuq3PikblH/9YS11AgwjwC++7ZcltzeZJdGTSPY1El2n6Dip9ML0hUjeSM\nROIWtac/nsNcJCnvOnUjK/c3NIAaGJcfRPiH/S0Ga6ROiDfFj2UXAmk/v4wRRUzr\n5lsA0jgEt5qcq2Xr/JPQVGB4wUgL/yQK0dDhW0EdrJ707e3BAkEA1aIHbmcVfCP8\nY/uWuK0lvWxrIWfR5MlHhI8tD9lvkot2kyXiV+jB6/gktwk1QaFsy7dCXn7w03+k\nxrjEGGN+kQJBAMuKf55lDtU9K2Js3YSStTZAXP+Hz7XpoLxmbWFyGvBx806WjgAD\n624irwS+0tBxkERbRcisfb2cXmAx8earT9MCQDZuVCpjBWxd1t66qYpgQ29iAmG+\njBIY3qn9uOOC6RSTiCCx1FvFqDMxRFmGdRVFxeyZwsVE3qNksF0Zko0MPKECQCEe\noDV97DP2iCCz5je0R5hUUM2jo8DOC0GcyR+aGZgWcqjPBrwp5x08t43mHxeb4wW8\ndFZ6+trnntO4TMxkA9ECQB+yCPgO1zisJWYuD46KISoesYhwHe5C1BQElQgi9bio\nU39fFo88w1pok23a2CZBEXguSvCvexeB68OggdDXvy0=\n—–END RSA PRIVATE KEY—–\n”; // […]

如何使用RSA加密数据,SHA-256作为哈希函数,MGF1作为掩码生成函数?

我正在做一些密码学实验。 现在我有接收器的公钥,我想加密一些数据并传递给接收器。 我想使用RSAES-OAEP算法。 SHA-256作为哈希函数,MGF1作为掩码生成函数。 我想用openssl做这个。 我找到了一个带有此函数的函数RSA_public_encrypt() ,我们可以指定填充。 其中一个填充选项是 RSA_PKCS1_OAEP_PADDING EME-OAEP,如PKCS#1 v2.0中定义的SHA-1,MGF1。 他们正在使用sha-1。 我想重新配置函数使用SHA256作为散列函数和MGF1作为散列函数。 我该怎么做 ?

如何使用OpenSSL C库将RSA密钥从二进制数据加载到RSA结构?

目前我的私钥保存在一个文件private.key中,我使用以下函数加载它: RSA * r = PEM_read_RSAPrivateKey(“private.key”,NULL,NULL,NULL); 这很好用,但我对基于文件的格式不满意; 我想在char*变量中以纯二进制forms(即,没有base64或类似)保存我的密钥,并从/向它加载/保存密钥。 这样我就有了更多的自由:我将能够将密钥直接存储到应用程序const char key[] { 0x01, 0x02, … }; ,通过网络套接字等发送 不幸的是,虽然我还没有办法做到这一点。 保存和加载我知道的密钥的唯一方法是将其直接读取/保存到文件中。

RSA加密/解密

我正在编写一个C程序,用于加密(基于私钥)和解密(基于公钥)文本。 我正在尝试使用OpenSSL lib。 有谁知道任何好的教程,快速入门指南或示例代码? 我没有在网上找到任何像样的人。