3
我使用OpenSSL来加密一个字符串。之后,我想用base64算法对使用OpenSSL的加密字符串进行编码。所以我发现剪断下面的代码:(bit.ly/adUSEw)OpenSSL - 如何确定rsa加密字符串的正确长度?
char *base64(const unsigned char *input, int length) {
BIO *bmem, *b64;
BUF_MEM *bptr;
b64 = BIO_new(BIO_f_base64());
bmem = BIO_new(BIO_s_mem());
b64 = BIO_push(b64, bmem);
BIO_write(b64, input, length);
BIO_flush(b64);
BIO_get_mem_ptr(b64, &bptr);
char *buff = (char*)malloc(bptr->length);
memcpy(buff, bptr->data, bptr->length - 1);
buff[bptr->length - 1] = 0;
BIO_free_all(b64);
return buff;
}
int main(int argc, char **argv) {
char *message = "TEST";
char *encryptedString = Encrypt(message);
if (encryptedString == NULL) {
return 0;
}
else {
char *output = base64(encryptedString, strlen(encryptedString));
cout << output << endl;
} }
我注意到的strlen(encryptedString)未在这种情况下正常工作。有时它会返回正确的长度,但大部分不会。那么确定正确长度的正确方法是什么?
Muchas gracias! – 2010-11-08 08:31:49