作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经创建了一个演示程序
1) Generating RSA private and public key pair.
2) RSA sign with private key and then using public key to for checking.
But my RSA_public_decrypt return -1;
#include <memory>
#include <openssl/bn.h>
#include <openssl/rsa.h>
#include <cassert>
#define ASSERT assert
#include <iostream>
using namespace std;
int padding = RSA_PKCS1_PADDING;
#define NONCE_LEN 32
int main(int argc, char* argv[])
{
unsigned char encrypted[4098]={};
unsigned char decrypted[4098]={};
uint8_t nonceB[NONCE_LEN]={"FGHIJKLMNOPQRSTUVWXYZ0123456789"};
uint8_t nonceA[NONCE_LEN]={"yogendra singh the developer of"};
uint8_t nonceRes[NONCE_LEN];
int rc;
BIGNUM *e = BN_new();
rc = BN_set_word(e, RSA_F4);
assert(rc==1);
RSA *rsaKeyPair = RSA_new();
rc = RSA_generate_key_ex(rsaKeyPair, 2048, e, NULL);
ASSERT(rc ==1);
RSA *privateKey = RSA_new();
privateKey= RSAPrivateKey_dup(rsaKeyPair);
RSA *publicKey = RSA_new();
publicKey= RSAPublicKey_dup(rsaKeyPair);
for(int i;i<NONCE_LEN;i++){
nonceRes[i]=nonceA[i]^nonceB[i];
}
int result = RSA_private_encrypt(NONCE_LEN,nonceRes,encrypted,privateKey,padding);
int result2 = RSA_public_decrypt(NONCE_LEN,encrypted,decrypted,publicKey,padding);
cout<<"encrypted len:"<<result<<endl;
RSA_free(privateKey);
RSA_free(publicKey);
BN_free(e);
cout<<"decrypted len:"<<result2<<endl;
cout<<endl <<"decoded String B:";
for(int i =0;i<NONCE_LEN;i++){
char x=nonceB[i]^decrypted[i];
cout<<x;
}
cout<<endl <<"decoded String A:";
for(int i =0;i<NONCE_LEN;i++){
char x=nonceA[i]^decrypted[i];
cout<<x;
}
cout<<endl;
return 0;
}
encrypted len:256
decrypted len:-1
最佳答案
RSA_public_decrypt
的第一个参数是签名的长度,而不是将被提取的摘要的长度。所以那行应该是这样的:
int result2 = RSA_public_decrypt(RSA_size(publicKey), encrypted, decrypted, publicKey, padding);
for(int i;i<NONCE_LEN;i++){
nonceRes[i]=nonceA[i]^nonceB[i];
}
关于encryption - RSA_public_decrypt 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44131568/
我已经创建了一个演示程序 1) Generating RSA private and public key pair. 2) RSA sign with private key and then us
python 3.4 中是否有任何 openssl 绑定(bind)绑定(bind)了 libopenssl 中的函数 RSA_public_decrypt() 允许我们使用公钥解密内容?出于某种原因
我正在尝试开发许可证验证解决方案。使用 OpenSSL 的 RSA_private_encrypt 函数在服务器上对许可证进行编码。 对于 Mac OX X,我使用 RSA_public_decryp
我是一名优秀的程序员,十分优秀!