- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要解析一个 SSH 私钥 ~/.ssh/id_rsa
使用 openssl (libcrypto) 进入 EVP_PKEY*
或 RSA*
key 。直到最近,该文件仍以易于解析的标准 PEM 或 PKCS1 格式存储。然而,openssh 已经切换到一种更复杂的新格式。
结构是defined here和 PEM 编码它看起来像这样(使用 ssh-keygen
生成)
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAnG3jyNb
SKSG19wHPhx2U1AAAAEAAAAAEAAAEXAAAAB3NzaC1yc2EAAAADAQABAAABAQDtmnNl2AFg
9faMuZ/U38tY3+pDrOa2yoiOLeXQI3044xNiMiGrRW03wzWsaNCcI8ZnEeSvzr2HUq0YFQ
QQ6MaQp8cZmoGkOSnwhLAscocZOaoZwoj85w2hybuSy9fc99FqKbJ201a0++2BhTw4Syhs
LT3AOs+Z0hHXZEVWAfBsOd4icLnChBdEAsIBzEObdGsZXHiOcVgvcbJ7UOuQCkiJV3RX+P
IvTzivPQ8IGmsgYUj5KSPjZg03/tr3ePItuFQZH2p85dQlbOLyhtMpx6M5ErCAesxuTN6z
kHKtfRNfYXoDOgd5EBIc9hLnmQtpn2EjfIk+yW+yTiv0pwNUhoeFAAAD0BHcM21NrYK7Pu
C4m79CfD3ZRMdKzG+hUqrV6bRC8qK/iTnt/E4GvEOIOqqoQMQp7PLRP5CkeWRp4Y0nmpsP
zoSlVLvpJ1o36pSSpF6ClmsviAXjujB4wqOp+vq9KqfQfJT+khq4u2EaKwzclpfwaUe2lT
t/UdUok4n8BGVZl6Hw3vF+a8XWpM3ZWxFJXNaQ1bklfYraKDR483I2KJX/hT1Y+Shrl7hd
faqfI8A71lV7qYwqyEMBgwsbNzDYUpICwAEGp00pbX7ahBgo3OIL8Ay1LTbVRyZqMZGGSy
Ay4+WD5cgzU1sb7Z7XnKeRdEWyYUezvzDLpwYsx5RjXIDECBOwbRexh0X0taJw9MIS1YtV
dXz+8PRelQSn7jMHTLa1ILhF95KQBBnqN8EAZEXPnX50b6tz1y7/U1PR/+OxaEGX960m25
2WoXfSRraA6lA2b28r4NT2/BWfYg+6RVu9AQOwdZNWs1fU4ZwnN3yf2w+xEJvvnrXFJrIv
Hy6riJOIB9kSFI314vqmipsMpm7eJK7S3TCi8O6npfkhKTsU1rK4MW+gYp3LKTa2/eUy9r
Rfdgg3dZfq4e51th/9g6SCfrLaDhqTVf7AThOSlmqIpW2A1+4WmuSqhplZhZV5QA0Dyg26
mPHMFTIKs6P2dzgqTkfFxpEici6BeTiSBuMjeKau2HI8r6VD8fcpkvcARPHncoZAdQbars
+e9FhyNMY+EVzun95FUjlbSAFCjGUN81/XPAd+PERTtg+Z1h+QEb1jlZO6l+L62SYXZQO7
jZa3euvFTUxh4GAuWMF4SM7HibTrnY3POD4y8pIWWFsS6xbDQPcy1BdgS4A4IeAXNFbFsX
U7xAwiA0QOnF2Qwc6rTIfR8KiDJ2pMPuSF3CsvuX1VuJZ4EvUFXImBAmet5ChXA2Gw2Gkf
vItgB70xjRVJUjqOE1FE8Qb61BWEvH9pQMIHt59ldrcnLycOFmBIvWiCLyEb5s+asMsqui
GoMowxdmaM+tkNsJIWFqKviaqHL51ZxzWfZ5C8RIrC1bBjCPdHd+T6iQifNS1vJhgEPuG/
iI9R2aFMdz69CVnWJzhtTEvJFsBNiM1rKTXXFm00rCZozKM6xVaiDodgL5s3FxVr17WTMH
FaFMCH7JNAJMCR7080IuABHFubE2UyeCV6WxUgDpeGzLGOLXmLlrpyB5DHbkuNa8OohIDm
qW5yZcK4RoN1Foi4+tAs7qCJQAJBKFmwTc+5y6mQnq9s9jHQqBbyweHmK8VTHwiRpHbBv/
BQ3FL3t8pTZxv6msYq0+PUUZ3L8+k=
-----END OPENSSH PRIVATE KEY-----
PEM_read_bio
解析文本这将剥离 PEM header 并对数据进行 base64 解码。但目前尚不清楚如何从规范中解析结构。
openssh-key-v1\0
但从那里还不清楚。
最佳答案
解析这些的最简单方法是避免自己解析它们,而是使用 ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
将 key 转换为 PEM 格式,然后正常使用 OpenSSL 对其进行解析。
但是,如果您非常希望自己动手,那么您链接到的协议(protocol)描述实际上会为您提供您需要了解的大部分内容。缺失信息的(关键)部分是:
int
是 32 位; string
type 是一个长度值元组,其中 length
是 uint32
指示有多少接下来的八位位组组成了字符串;和 ssh-dss
、ssh-rsa
、ecdsa-sha2-*
等)的格式记录在各种 RFC 中,您可以在 IANA registry for SSH Public Key Algorithm Names 中找到引用。 . 关于ssh - 使用 openssl libcrypto 解析新的 openssh-key-v1 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55260550/
我在Linux上安装了Openssl,Openssl-dev。配置Thrift时,出现以下错误: 正在检查-lcrypto中的BN_init ...否 配置:错误:“错误:需要libcrypto。”
当我尝试编译使用 openssl 'crypto' 库函数和命令行 -lcrypto 和 gcc 4.4.3 的 C 代码时> 它给出了一个错误 `@ubu:$ gcc -ggdb aes_m.c -
我正在尝试在 XCODE 4.2 上为 mac 编译一个较旧的 objective-c 应用程序 尝试编译时出现链接错误 无法直接与架构 x86_64 的/usr/lib/libssl.0.9.7.d
我正在遵循以下位置的代码示例:http://www.openssl.org/docs/crypto/sha.html# 执行以下操作后: EVP_DigestFinal_ex(&mdctx, md_v
我正在使用 libcrypto++ 进行 aes 加密。我想在我的代码中添加以下方法:EVP_CipherInit_ex()、EVP_CipherUpdate()、EVP_CipherFinal_ex
我正在尝试将一个共享库放在一起,该库向远程服务器发出 HTTP GET 请求。我的库将由另一个应用程序加载,我想将一些统计数据发布到网络服务器 API。我的代码目前看起来像这样: void conne
我以某种方式设法在 Ubuntu 14.04 上安装了 libcrypto++ 库。现在,我在 Eclipse CDT 中有一个项目,我想创建一个可执行文件并使其独立运行在其他 linux 风格和 w
我有以下生成文件,我将以静态方式添加库“libcrypto.a”。我需要这样做,因为目标系统无法安装 openssl 库。 # Environment MKDIR=mkdir
我想尝试一个带有 makefile 的程序,但是当我将 make 放入 shell 时,错误是: g++ -g -DaUNIX -I../../acroname/aInclude -I../../a
我使用以下方法创建了一个 RSA key : RSA_generate_key(2048, RSA_F4, NULL, NULL); 现在我想将公钥导出到另一方 B。现在,我刚刚存储了整个 RSA*
我使用的是 Mac OS X 10.6 SDK,并且我的部署目标设置为 Mac OS 10.5。我链接到 libcrypto(AquaticPrime 需要这个)并发现我的应用程序无法在 Leopar
我自己编译php7。 下载php7源代码。 yum安装libxml2-devel openssl-devel.i686 配置 ./configure --prefix=/usr/local/php7
我看到了这个问题“找不到包‘libcrypto’”。我几个月前修复的相同错误是遵循以下解决方案:https://github.com/scipr-lab/libsnark/issues/99 我今天尝
我需要签署一个字符串,将公钥作为字符串发布,然后在其他地方使用公钥来验证签名的消息。这是消息签名的部分: // RSA keypair generation EVP_P
我正在尝试使用 Debian Wheezy 和 g++4.7 在我的系统上编译一个程序。我希望它能够在另一个带有 Debian Squeeze 的系统上运行(并且没有最近的 g++)。我无法在 Squ
这更像是一个假设,而我正在调试一些代码。假设我有一个应用程序(称为 X)调用一个库以通过 TLS 加密的 SMTP 连接发送电子邮件,同时 X 正在与另一个库交谈,该库通过相同的 libcrypto
我正在为 Android 应用构建一个帮助程序库,我需要为我正在使用的一些支持库提供完整的 OpenSSL 实现。我正在创建一个构建链并用它编译 libssl 和 libcrypto 但在运行时我得到
我有一个 C 文件需要在 Windows7 上编译。我已经为 gcc 安装了 MinGW。我还需要 OpenSSL,因此点击他们网站上的链接并从 Shining Light Productions 下
近 3 天以来,我一直在尝试这样做。它让我发疯。 正如您想象的那样,我对 C++ 还很陌生。 任何人都可以一步一步地指导我使用 openssl 中的函数编写一个 hello world 程序,并从 W
案例: 我正在构建一个使用 libcrypto 和 libssl 的应用程序。我正在尝试使用预构建的 libcrypto.so 和 libssl.so 并编译我的应用程序。 但我不断收到 undefi
我是一名优秀的程序员,十分优秀!