如何在C的字符串文字中存储私钥?

时间:2018-10-11 06:51:46

标签: c openssl

如何在C语言的字符串文字中存储私钥?

例如

-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBANuwDJCXuv/FszouyCcDNIn6++/8EtdVpzvLKpqLdK/fq6Y3bIjD
6fPVCNwANeJsSHKexi4qPkBpZ8/C0Ssnp48CAwEAAQJAHtDmIk42W/R2fJ3dU6Oe
dhBv0K0SU4RfTgLkugL/3j+GIQCiFXBkfO/eG6J8vQlOQaGbK7Zu6bSnCoCdiDmR
sQIhAPysf1AIbRoQGO6HYtAoTUOMlih7dyh4O3jKCqQUa60XAiEA3pRju0/0g2JK
bdSct/kqii1o+RydH79WCnKVgVvulEkCIFdbRADliOLT4erFv/H7nQrXliqU1ROW
zejq4VbtAHUtAiBRP5OkRYx5BUEsFGdc1MyNggQGo0ZL13ld+PPQM7HEWQIhAIU1
InlMgmqV1GzEXsAwRH5RH2zEqAe9mKkU7SZWT0rI
-----END RSA PRIVATE KEY-----
  1. 我可以删除每行中的换行符吗?
  2. 在C中定义多行字符串文字的最佳方法是什么?

1 个答案:

答案 0 :(得分:6)

不管与这种“解决方案”相关的安全性问题,您都可以这样做:

const char* key =
    "MIIBOgIBAAJBANuwDJCXuv/FszouyCcDNIn6++/8EtdVpzvLKpqLdK/fq6Y3bIjD"
    "6fPVCNwANeJsSHKexi4qPkBpZ8/C0Ssnp48CAwEAAQJAHtDmIk42W/R2fJ3dU6Oe"
    "dhBv0K0SU4RfTgLkugL/3j+GIQCiFXBkfO/eG6J8vQlOQaGbK7Zu6bSnCoCdiDmR"
    "sQIhAPysf1AIbRoQGO6HYtAoTUOMlih7dyh4O3jKCqQUa60XAiEA3pRju0/0g2JK"
    "bdSct/kqii1o+RydH79WCnKVgVvulEkCIFdbRADliOLT4erFv/H7nQrXliqU1ROW"
    "zejq4VbtAHUtAiBRP5OkRYx5BUEsFGdc1MyNggQGo0ZL13ld+PPQM7HEWQIhAIU1"
    "InlMgmqV1GzEXsAwRH5RH2zEqAe9mKkU7SZWT0rI";

指针key现在指向嵌入在可执行文件中的私钥。它不包括换行符,因为这些字符串文字在编译时会自动连接,无论它们之间有什么空格。

已经有人说过了,但我想重申,类似的事情不应该用任何重要的键和数据来完成。