public在c语言的作用,在rsa c中,public和primary是什么样子的?

我试图使用非对称密钥算法rsa来保护我的api。

假设我为使用我的api的用户创建了一个密钥对

作为

RSA = new RSACryptoServiceProvider();

string PublicKey = RSA.ToXmlString(false);

string PrivateKey = RSA.ToXmlString(true);

现在我的私钥看起来像

tMvvUeHhggKAVex8JzYKXYQ32HVmr05PdtT1KV3kTkKE26jO/9IVmg+bWwxR1vuMzmY7spwguSJQsnjutJXamH0 mblNgYHmWwhyhJMSTtnZp57VDNNedjCFQnLOn211yk/PpCQHEiDDvt84hnmcdXNBlfZfkQzQ+UO/elhP5NH0=

AQAB

22SSx3JpSqYVUWuxiSKwmh/8RDDcgDvq8l+4dMlQ/F+BJhthTQ3UJGupWaxiJyXX95AYAJIJJvWVvmvI7tqbxw==

0va2WFy0oUwX4eJtZElRbot9TOrwGcqI64rMAYjvxl/mayCRXf0ypwKofKWOsmjK/pX0xWaqnFWB/NdLFt4Fmw==VbIYPz2qcRUkmJQnWbiqINnDkONBDfnZkOjgxQVp09p+OONTA2UWa09+a9+Qy1fV3wZyya5BUu10m1fAucO8Ow==

Lm8hOZfGJk6SXySwgUdmBhfrz3dSu8qJkpatSpUyeY54MBIuDOsDMCF0pmLmYryQGbM1+hEb8mcbwmQ84d6iiw==

L67OLIIK+M3OF1nxSHTjZ+Kv/hwOHJPvdHHSuh9VEmw93kPGn6Qt6GudEreFb6xlFsuR6UM19LUIweapgaUagQ==

YbaGlZ6bHoTzj3zMbPTMDVbUR+zLnpuYXwUhq0XPimxxGbbWiXSlsCoXMNIruSEjLLocMaAoH2bobkzl1jvXdAI30NdZ/rpG5SRl dpaeIundLfHkSnZfHwHuP9OGXJSXmbmLCrO8dq7BjLauS4JiTRgjiXoq8c995MEF+vhw9hE=

这是我的公钥

lF1Yof6FXaY9M/StHwPC1voW5K5JOqSu8BXndS4WH06L9mOfrNI9Et0cRaHjiYd2bQNFZB9+ AZmN4ODc36DgVPqQqYY2tbH+9UY0hcdi+WnDuUZe7sgvWKfGwBKTcy7g8uUAzpTWEP1W0FqeMunmXljD8Iouoqp5oHtTW1GHIlE=

AQAB

现在我怀疑这里的私钥字符串也包含公钥

我应该将私钥或公钥字符串的哪个部分发送给用户

XmlFormat

有很多标签像

modulus ,D,Q

string

什么是真正的

key

在我发送给用户的字符串中

public

,

pvt keys

因为我的用户将在android平台上

他能用那些钥匙吗

xml format

?

就像在

c#

当我们必须使用钥匙时

我愿意

rsa.FromXmlString(Key);

哪里

公众的

private key

是在

XmlFormat

用户是否可以在上执行此操作

android

首先,你需要下载并安装 OpenSSL 库并将其包含在你的项目。然后,你可以使用下面的代码来实现 RSA 签名和验证: ```c #include <stdio.h> #include <openssl/rsa.h> #include <openssl/pem.h> int main() { // 加载私钥 RSA *rsa_private_key = NULL; FILE *fp = fopen("private_key.pem", "r"); if (fp == NULL) { printf("Failed to open private key file.\n"); return 1; } rsa_private_key = PEM_read_RSAPrivateKey(fp, NULL, NULL, NULL); fclose(fp); // 加载公钥 RSA *rsa_public_key = NULL; fp = fopen("public_key.pem", "r"); if (fp == NULL) { printf("Failed to open public key file.\n"); return 1; } rsa_public_key = PEM_read_RSA_PUBKEY(fp, NULL, NULL, NULL); fclose(fp); // 签名 char data[100] = "hello world"; unsigned char sign[256] = {0}; unsigned int sign_len = 0; int ret = RSA_sign(NID_sha1, data, strlen(data), sign, &sign_len, rsa_private_key); if (ret != 1) { printf("Failed to sign data.\n"); return 1; } // 验证签名 ret = RSA_verify(NID_sha1, data, strlen(data), sign, sign_len, rsa_public_key); if (ret != 1) { printf("Failed to verify signature.\n"); return 1; } printf("RSA signature and verification succeeded.\n"); return 0; } ``` 在这个示例,我们加载了一个私钥和公钥,使用私钥对数据进行签名并使用公钥验证签名。你需要将 `private_key.pem` 和 `public_key.pem` 替换为你自己的私钥和公钥文件名,并在代码指定正确的签名算法(在这个示例,我们使用 SHA1 算法)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值