openssl 命令查看rsa密钥文件明文参数值

openssl编程时会常用到一些openssl命令用作对编程正确性的检验;两条常用命令方便自己查看!

 1.明文打印私钥信息:OpenSSL> rsa -in test.key -text
Private-Key: (1024 bit)
modulus:
    00:9e:ad:4a:00:68:0c:f4:b6:a8:74:a1:f3:8f:ff:
    68:46:db:45:ae:4e:1f:18:37:14:d5:9d:5e:8f:c8:
    b3:61:e2:6f:f2:58:d2:b0:9a:6c:6f:8f:7b:88:64:
    8f:19:d2:24:c1:0f:ff:a5:5c:cf:3c:29:6a:cf:d4:
    e4:1b:fc:7a:e3:08:3c:23:40:be:a7:a2:43:48:40:
    60:ce:e4:d4:55:99:97:e1:00:97:16:1d:31:f7:73:
    c3:60:bb:ee:f9:d6:5a:02:43:9b:e9:ce:ca:24:b8:
    48:bc:98:1c:8e:4b:60:59:8f:33:b4:46:9b:85:4b:
    a9:d0:a4:16:ee:86:4f:fc:d7
publicExponent: 65537 (0x10001)
privateExponent:
    00:8a:a3:a3:ed:b8:fb:e0:f0:9b:3c:d4:a7:c7:60:
    04:0f:2c:d4:b4:18:23:c8:f7:8f:67:99:09:1f:1d:
    df:c5:9d:9f:ec:22:39:6b:fe:70:d2:04:8e:8d:bc:
    36:df:fb:a1:0b:62:5c:1e:72:79:ca:f9:f1:0e:47:
    d7:4a:b0:8d:f8:e1:66:a2:cd:c2:be:d7:c9:13:10:
    5d:64:fd:0a:20:ff:5b:3c:7d:2a:56:e1:81:25:eb:
    a4:95:97:3f:39:49:d5:88:14:e5:7a:1e:6e:75:70:
    a6:07:ae:36:8a:90:f7:72:3c:10:e6:89:90:1c:66:
    19:bf:34:1f:de:c8:51:bd:89
prime1:
    00:cc:11:4c:03:8c:2a:cd:98:00:4c:ca:de:04:8b:
    6a:6d:36:d0:8b:bc:f9:c7:6f:d5:98:b2:2f:ff:91:
    89:74:ad:da:47:b2:11:d1:1e:68:6b:83:e8:41:52:
    b9:4c:ca:f1:be:9b:21:d9:7c:bc:48:8a:4d:96:89:
    ba:f3:17:f2:2b
prime2:
    00:c7:0e:db:7e:51:fd:87:2d:84:f3:f8:fd:2c:58:
    65:6f:fc:22:17:7f:b7:5b:f3:40:24:3e:03:5c:e3:
    6a:8e:4e:0a:ec:15:a0:32:3e:8e:47:05:97:63:5a:
    ce:64:b3:3a:a2:b2:d6:e5:f6:3f:c0:05:56:b8:b3:
    64:1e:21:c6:05
exponent1:
    6e:66:ed:38:fe:1c:2a:1e:92:0a:f9:b6:23:bf:49:
    54:cc:d3:06:c6:b6:5b:af:a5:5f:77:07:80:bc:bc:
    20:e3:ed:b3:dc:22:c7:80:2b:fd:fe:df:28:78:18:
    c7:f3:03:d6:9b:17:35:12:c6:ca:78:08:81:e9:01:
    bb:82:b9:01
exponent2:
    5d:ab:21:20:1d:06:d7:30:55:4a:d4:d4:95:a4:76:
    ff:2e:3f:00:9d:c9:b3:8c:10:97:bd:52:a9:c8:1d:
    e1:1e:da:46:e3:9a:41:6a:6c:5b:01:47:8e:aa:31:
    4a:f3:87:d8:fd:9c:e0:13:73:46:31:7c:f0:67:01:
    ea:a7:eb:dd
coefficient:
    55:85:cc:f5:4e:3a:3b:ec:d1:bb:38:57:c1:fb:b5:
    f1:40:6e:ea:5b:05:44:1b:16:71:9d:57:65:12:5b:
    cb:17:18:07:a1:4c:37:4a:98:65:b2:9d:04:1e:0d:
    0a:84:b8:c6:bf:1f:36:73:6d:e3:49:fd:0d:c4:c3:
    76:42:4a:7e
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCerUoAaAz0tqh0ofOP/2hG20WuTh8YNxTVnV6PyLNh4m/yWNKw
mmxvj3uIZI8Z0iTBD/+lXM88KWrP1OQb/HrjCDwjQL6nokNIQGDO5NRVmZfhAJcW
HTH3c8Ngu+751loCQ5vpzsokuEi8mByOS2BZjzO0RpuFS6nQpBbuhk/81wIDAQAB
AoGBAIqjo+24++DwmzzUp8dgBA8s1LQYI8j3j2eZCR8d38Wdn+wiOWv+cNIEjo28
Nt/7oQtiXB5yecr58Q5H10qwjfjhZqLNwr7XyRMQXWT9CiD/Wzx9KlbhgSXrpJWX
PzlJ1YgU5XoebnVwpgeuNoqQ93I8EOaJkBxmGb80H97IUb2JAkEAzBFMA4wqzZgA
TMreBItqbTbQi7z5x2/VmLIv/5GJdK3aR7IR0R5oa4PoQVK5TMrxvpsh2Xy8SIpN
lom68xfyKwJBAMcO235R/YcthPP4/SxYZW/8Ihd/t1vzQCQ+A1zjao5OCuwVoDI+
jkcFl2NazmSzOqKy1uX2P8AFVrizZB4hxgUCQG5m7Tj+HCoekgr5tiO/SVTM0wbG
tluvpV93B4C8vCDj7bPcIseAK/3+3yh4GMfzA9abFzUSxsp4CIHpAbuCuQECQF2r
ISAdBtcwVUrU1JWkdv8uPwCdybOMEJe9UqnIHeEe2kbjmkFqbFsBR46qMUrzh9j9
nOATc0YxfPBnAeqn690CQFWFzPVOOjvs0bs4V8H7tfFAbupbBUQbFnGdV2USW8sX
GAehTDdKmGWynQQeDQqEuMa/HzZzbeNJ/Q3Ew3ZCSn4=
-----END RSA PRIVATE KEY-----

2.明文打印公钥信息: OpenSSL> rsa -pubin -in test_pub.key -text
Modulus (1024 bit):
    00:9e:ad:4a:00:68:0c:f4:b6:a8:74:a1:f3:8f:ff:
    68:46:db:45:ae:4e:1f:18:37:14:d5:9d:5e:8f:c8:
    b3:61:e2:6f:f2:58:d2:b0:9a:6c:6f:8f:7b:88:64:
    8f:19:d2:24:c1:0f:ff:a5:5c:cf:3c:29:6a:cf:d4:
    e4:1b:fc:7a:e3:08:3c:23:40:be:a7:a2:43:48:40:
    60:ce:e4:d4:55:99:97:e1:00:97:16:1d:31:f7:73:
    c3:60:bb:ee:f9:d6:5a:02:43:9b:e9:ce:ca:24:b8:
    48:bc:98:1c:8e:4b:60:59:8f:33:b4:46:9b:85:4b:
    a9:d0:a4:16:ee:86:4f:fc:d7
Exponent: 65537 (0x10001)
writing RSA key
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCerUoAaAz0tqh0ofOP/2hG20Wu
Th8YNxTVnV6PyLNh4m/yWNKwmmxvj3uIZI8Z0iTBD/+lXM88KWrP1OQb/HrjCDwj
QL6nokNIQGDO5NRVmZfhAJcWHTH3c8Ngu+751loCQ5vpzsokuEi8mByOS2BZjzO0
RpuFS6nQpBbuhk/81wIDAQAB
-----END PUBLIC KEY-----
OpenSSL>

 

使用 OpenSSL 生成 RSA 密钥对可以分为以下步骤: 1. 生成私钥:使用 OpenSSL 命令行工具 `openssl`,执行以下命令生成一个 2048 位的 RSA 私钥: ```bash openssl genpkey -algorithm RSA -out private_key.pem -aes256 ``` 该命令将生成一个加密的 PEM 格式的私钥文件 `private_key.pem`,并要求设置一个密码来保护私钥。 2. 提取公钥:从私钥文件中提取公钥,可以使用以下命令: ```bash openssl rsa -in private_key.pem -pubout -out public_key.pem ``` 该命令将从私钥文件中提取公钥,并将其保存到一个 PEM 格式的文件 `public_key.pem` 中。 现在,你可以使用这两个文件来进行加密和解密操作。在加密时,你需要使用公钥加密数据,然后使用私钥解密数据。在签名时,你需要使用私钥对数据进行签名,然后使用公钥验证签名。 下面是一个使用 OpenSSL 库的例子,它演示了如何使用 PEM 格式的 RSA 密钥对进行加密和解密操作: ```c #include <openssl/evp.h> #include <openssl/pem.h> int rsa_encrypt(const unsigned char *plaintext, int plaintext_len, unsigned char *ciphertext, EVP_PKEY *pubkey) { EVP_PKEY_CTX *ctx; size_t ciphertext_len; int rc; ctx = EVP_PKEY_CTX_new(pubkey, NULL); if (!ctx) { return -1; } rc = EVP_PKEY_encrypt_init(ctx); if (rc != 1) { EVP_PKEY_CTX_free(ctx); return -1; } rc = EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_OAEP_PADDING); if (rc != 1) { EVP_PKEY_CTX_free(ctx); return -1; } rc = EVP_PKEY_encrypt(ctx, ciphertext, &ciphertext_len, plaintext, plaintext_len); if (rc != 1) { EVP_PKEY_CTX_free(ctx); return -1; } EVP_PKEY_CTX_free(ctx); return ciphertext_len; } int rsa_decrypt(const unsigned char *ciphertext, int ciphertext_len, unsigned char *plaintext, EVP_PKEY *privkey) { EVP_PKEY_CTX *ctx; size_t plaintext_len; int rc; ctx = EVP_PKEY_CTX_new(privkey, NULL); if (!ctx) { return -1; } rc = EVP_PKEY_decrypt_init(ctx); if (rc != 1) { EVP_PKEY_CTX_free(ctx); return -1; } rc = EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_OAEP_PADDING); if (rc != 1) { EVP_PKEY_CTX_free(ctx); return -1; } rc = EVP_PKEY_decrypt(ctx, plaintext, &plaintext_len, ciphertext, ciphertext_len); if (rc != 1) { EVP_PKEY_CTX_free(ctx); return -1; } EVP_PKEY_CTX_free(ctx); return plaintext_len; } ``` 这里 `rsa_encrypt` 函数使用给定的公钥对一个数据进行加密,并返回密文的长度。`rsa_decrypt` 函数使用给定的私钥对一个密文进行解密,并返回明文长度。注意,这些函数仅适用于 RSA_PKCS1_OAEP_PADDING 填充模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值