Tag: public key encryption

用于在C / C ++中实现RSA的开源代码(使用库或自己编写)

我需要用于RSA实现的开源代码(加密/解密和其他)。 谁能提出一些建议。 编辑:使用像opessl这样的开源库或者自己编写它是否很好(库也包含其他冗余的东西)

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”; // […]