解:

function len($s)

{

$len = strlen($s);

if ($len < 0x80) {

return chr($len);

}

$data = dechex($len);

$data = pack('H*', (strlen($data) & 1 ? '0' : '') . $data);

return chr(strlen($data) | 0x80) . $data;

}

function openssh2pem($file)

{

list(,$data) = explode(' ', trim(file_get_contents($file)), 3);

$data = base64_decode($data);

list(,$alg_len) = unpack('N', substr($data, 0, 4));

$alg = substr($data, 4, $alg_len);

if ($alg !== 'ssh-rsa') {

return FALSE;

}

list(,$e_len) = unpack('N', substr($data, 4 + strlen($alg), 4));

$e = substr($data, 4 + strlen($alg) + 4, $e_len);

list(,$n_len) = unpack('N', substr($data, 4 + strlen($alg) + 4 + strlen($e), 4));

$n = substr($data, 4 + strlen($alg) + 4 + strlen($e) + 4, $n_len);

$algid = pack('H*', '06092a864886f70d0101010500'); // algorithm identifier (id, null)

$algid = pack('Ca*a*', 0x30, len($algid), $algid); // wrap it into sequence

$data = pack('Ca*a*Ca*a*', 0x02, len($n), $n, 0x02, len($e), $e); // numbers

$data = pack('Ca*a*', 0x30, len($data), $data); // wrap it into sequence

$data = "\x00" . $data; // don't know why, but needed

$data = pack('Ca*a*', 0x03, len($data), $data); // wrap it into bitstring

$data = $algid . $data; // prepend algid

$data = pack('Ca*a*', 0x30, len($data), $data); // wrap it into sequence

return "-----BEGIN PUBLIC KEY-----\n" .

chunk_split(base64_encode($data), 64, "\n") .

"-----END PUBLIC KEY-----\n";

}

php设置pem,php – 如何将OpenSSH公钥文件格式转换为PEM相关推荐

  1. JAVA解析各种编码密钥对(DER、PEM、openssh公钥)

    http://blog.csdn.net/zhouyuqwert/article/details/8627952 一.DER编码密钥对 先说下DER编码,是因为JCE本身是支持DER编码密钥对的解析的 ...

  2. java der pem_JAVA解析各种编码密钥对(DER、PEM、openssh公钥)

    一.DER编码密钥对 先说下DER编码,是因为JCE本身是支持DER编码密钥对的解析的,可以参见PKCS8EncodedKeySpec和X509EncodedKeySpec. DER编码是ASN.1编 ...

  3. 使用SecureCRT设置linux系统登录的ssh公钥认证

    使用SecureCRT设置linux系统登录的ssh公钥认证 linux系统环境:CentOS 5.8 1.修改ssh配置文件/etc/ssh/sshd_config RSAAuthenticatio ...

  4. php 公钥格式转换,如何把OpenSSH公钥转换成OpenSSL格式

    <如何把OpenSSH公钥转换成OpenSSL格式>要点: 本文介绍了如何把OpenSSH公钥转换成OpenSSL格式,希望对您有用.如果有疑问,可以联系我们. 首先看看OpenSSL工具 ...

  5. efs.mbn_在AIX 6.1.0,TL 4上使用EFS配置OpenSSH公钥认证

    什么是EFS? 通常,AIX上的加密文件系统(EFS)支持使系统上的各个用户可以加密他们的数据,也可以通过密钥保护来访问它们. 用户将能够设置密钥并为EFS分配默认密钥. 这些密钥存储在受密码保护的密 ...

  6. android 公钥pem编码,如何将PEM编码的Elliptic Curve公钥加载到Bouncy Castle中?

    我有一个PEM编码的Elliptic Curve公钥,我正试图加载到Bouncy Castle中,到目前为止我尝试的所有内容都失败了.这是我正在尝试加载的密钥的示例: -----BEGIN PUBLI ...

  7. 证书 keystore 转换为 pem再提取 证书/私钥

    今天遇到一个问题,让我这边提供ssl证书的 pem和key.但是查看了tomcat的配置发现只有一个tomcat.keystore文件 配置如下 <Connector port="44 ...

  8. iOS RSA加密 以及生成公钥 秘钥 pem文件

    在iOS中使用RSA加密解密,需要用到.der和.p12后缀格式的文件,其中.der格式的文件存放的是公钥(Public key)用于加密,.p12格式的文件存放的是私钥(Private key)用于 ...

  9. pem格式证书编码 x509_公钥证书编码解读

    一.文件编码 PEM (Privacy Enhancement Message),定义见 结构组成 == {header} body {tail} 示例 -----BEGIN PUBLIC KEY-- ...

最新文章

  1. 安装NodeJS环境报错
  2. 你知道什么是AVL树吗?
  3. android studio多页面滑动,Android Studio之多个Activity的滑动切换(二)
  4. ASP.NET Core中的OWASP Top 10 十大风险-SQL注入
  5. php判断数组下标,php判断json或者数组格式与给定格式是否一致
  6. cmake mysql 编译参数_Cmake-MySQL编译参数说明
  7. NLP论文 -《Distributed Representations of Sentences and Documents》-句子和文档的分布式表示学习
  8. 浅析MySQL二进制日志
  9. ubuntu arm qt_Cyclone V SOC(ARM+FPGA)开发文档_之开发流程详解
  10. 安装PhantomJS
  11. 为什么阿里巴巴不建议MySQL使用Text类型?
  12. 通过微软官方工具卸载office
  13. AD高级培训PPT总结
  14. 详解Java 12新特性:switch表达式
  15. 响应时间与滤波器截止频率的关系
  16. android studio 编译Telegram源码
  17. 60秒Dapp快讯 | 全球公有链技术评估:以太坊在应用性上排第一;蚂蚁金服区块链试水医疗电子票据
  18. java程序员必读书籍
  19. DB 查询分析器7.01 新增的保存执行结果到多个文件功能
  20. 原子钟(atomic clock)

热门文章

  1. LeetCode问题7
  2. 【Debug探索团队公告】Debug探索团队,邀请您的加入
  3. Ponemon Institute告诉你,大数据正在勾搭网络安全
  4. Udp、Tcp、Http Socket
  5. 数字IC后端设计实现流程之floorplan及powerplan规划
  6. CXF之jaxws:endpoint对spring bean的引用
  7. Jquery获取iframe中的元素
  8. java jsonobject date_如何将Json Passed Date Value分配给Java Date Object
  9. test title
  10. python 文字处理系统_详解Python中的文本处理