引:
数字证书有多种格式,对于经过base64编码的证书而言,如果你将所有内容合并成一行,微软操作系统还是能正确解析的,然而如果你使用OpenSSL的x509命令解析,就会报错,可见,微软的兼容行太强了,特别是对自己的东西。
今日工作中遇到合为一行的数字证书,在windows下可以被认出,然而在Linux下却不行,于是需要将一行的证书分解为64个字符一行的证书,然后加上-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----,本文解析两种方式,完成将一行证书变为N行base64编码证书的方式,两种方式均使用vim。
零.初始数据:
MIICBzCCAa8CCqwerC6hedfrvjAJBgabcdjOPQQBMIGKMQswCQYDVQQGEwJDTjELMAkGA1UECBMCU0gxETAPBgNVBAcTCFNoYW5na5678RYwFAYDVQQKEw1Lb2FsIFNvZnR3YXJlMRIwEAzGFpMLEwlTU0wgR1qazXAxDzANBgsdfgMTBmVjYy1jYTEeMBwGCSqGSIb3DQEJARYPZWNjLWNhQGtvYWwuY29tMB4XDTExMDExODsdfgUxM1oXDTExMDIxNzA0NDUxM1owgY4xCzAJBgNVBAYTAkNOMQswCQY2323IEwJTSDERMA8GA1UEBxMIU2hhbmdoYWkxFjAUBgNVBAoTDUtvYWwgU29mdHdhcmUxEuiopgNVBAsTCVNTTCBHcm91cDERMA8GA1UEAxMIZWNjLXVzZXIxIDAeBgkqhkiG9w0BCQEWEWV12341c2VyQGtvYWwuY29tMFkwEwYHKoZIzj0CAQYIKoEcgUUBgi0DQgAEl1iWcIeqYpigXDziJ4GS9M+23bE8qemaJvjpBOEXveF0eMJUN2udNJzHW/WpvTZrJC/mZsXnY+gdkAQIrXWjAJBgcqhkjOPQQBA0cAMEQCIGiWpXNEp4aKT2GzACBUvs0tZQLTanULKX/vTHZCv4FAiAb2s9u4G2SxgiEpWzhdMIuM3WsgbrazxsxSfLLG1234567
以上是初始数据,以一整行的方式保存了整个数字证书(以经过本人改写,毕竟证书不能随意暴露...),需要将之整理成每64个字符一行的base64编码方式,也就是OpenSSL的pem格式证书(去除头尾)。
一.动态的方式
所谓动态的方式就是用“人的操作方式”进行换行符号的插入,无非就是64个字符作为间隔向前推进,然后插入回车符,因此可以使用如下步骤:
1.定位到64个字符处:
64l
2.进入插入模式:
i
3.拍入回车:
Enter
4.退出插入模式
Esc
5.重复1-4,重复N次,视文件大小而定
从以上步骤,我们发现,人为的操作其实是一系列确定而且重复的操作,因此我们希望使用诸如宏的方式来完成这个任务,vim拥有宏录制的功能,命令模式下输入qX就可以录制名为X的宏,因此我们只需要以下步骤就可以完成一个一整行证书的base64编码:
<q>b #q开始录制名字是b的宏
64<l> #光标右移64个字符
<i> #进入插入模式
<Enter> #插入换行
<Esc> #退出插入模式
<q> #结束录制宏b
num<@><b> #将宏b执行num次,视文件行大小而定
6.效果:和静态方式一样,见静态方式。
动态的方式肯定能完成这个任务,然而还有静态的方式
二.静态的方式
静态方式是计算机使用的方式,计算机使用程序完成这个任务,虽然计算机程序最终也是人编写的。计算机程序完成64间隔字符换行的方式使用一种算法,这种算法明显不符合人的思维方式。正如人类会使用等差数列求和公式计算等差数列和然而计算机必须使用递推或者递归方式一样,计算机程序没有归纳的能力,不会使用公式,只能按步骤进行。
1.在一个新窗口打开help手册
:help
2.打开change.txt这个help页
:help change
...
3.找到了替换语法
:[range]s[ubstitute]/{pattern}/{string}/[&][c][e][g][p][r][i][I] [count]
For each line in [range] replace a match of {pattern}
with {string}.
For the {pattern} see |pattern|.
{string} can be a literal string, or something
special; see |sub-replace-special|.
...
显然在特定位置插入换行是一个“特殊”的需求
4.打开sub-replace-special
:help sub-replace-special
5.找到了以下的解释
magic nomagic action
\0 replaced with the whole matched pattern *\0* *s/\0*
在s/orig/string/g中,orig是一个位置,该位置只能由正则表达式指定,其正则表达式为:.{64},而string则是一个换行符号,根据上面的解释,string应该为\0\r
6.退出help
:q
8.开始修改
:s/.\{64\}/\0\r/g
9.效果
MIICBzCCAa8CCqwerC6hedfrvjAJBgabcdjOPQQBMIGKMQswCQYDVQQGEwJDTjEL
MAkGA1UECBMCU0gxETAPBgNVBAcTCFNoYW5na5678RYwFAYDVQQKEw1Lb2FsIFNv
ZnR3YXJlMRIwEAzGFpMLEwlTU0wgR1qazXAxDzANBgsdfgMTBmVjYy1jYTEeMBwG
CSqGSIb3DQEJARYPZWNjLWNhQGtvYWwuY29tMB4XDTExMDExODsdfgUxM1oXDTEx
MDIxNzA0NDUxM1owgY4xCzAJBgNVBAYTAkNOMQswCQY2323IEwJTSDERMA8GA1UE
BxMIU2hhbmdoYWkxFjAUBgNVBAoTDUtvYWwgU29mdHdhcmUxEuiopgNVBAsTCVNT
TCBHcm91cDERMA8GA1UEAxMIZWNjLXVzZXIxIDAeBgkqhkiG9w0BCQEWEWV12341
c2VyQGtvYWwuY29tMFkwEwYHKoZIzj0CAQYIKoEcgUUBgi0DQgAEl1iWcIeqYpig
XDziJ4GS9M+23bE8qemaJvjpBOEXveF0eMJUN2udNJzHW/WpvTZrJCYp/mZsXnY+
gdkAQIrXWjAJBgcqhkjOPQQBA0cAMEQCIGiWpXNEp4aKT2GzACBUvs0tZQLTan/U
LKX/vTHZCv4FAiAb2s9u4G2SxgiEpWzhdMIuM3WsgbrazxsxSfLLG1234567
10.然而!然而
然而为什么在这个任务中,计算机程序使用了公式(正则表达式),而人类的方式却使用了按照步骤的方式(录制宏)呢?...
注释:上述第9点是动态方式和静态方式共同的结果。
使用VIM将一行X509证书分解为多行的方式
原创
©著作权归作者所有:来自51CTO博客作者dog250的原创作品,请联系作者获取转载授权,否则将追究法律责任
使用VIM将一行X509证书分解为多行的方式
https://blog.51cto.com/dog250/559426
使用VIM将一行X509证书分解为多行的方式
https://blog.51cto.com/dog250/559426
举报文章
请选择举报类型
内容侵权
涉嫌营销
内容抄袭
违法信息
其他
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
logstash处理多行日志-处理java堆栈日志
logstash处理多行日志-处理java堆栈日志一、背景二、需求三、实现思路1、分
logstash logstash多行日志 logstash堆栈处理 logstash 日志收集 elk日志处理 -
linux常用命令
博客主页:?看看是李XX还是李歘歘?每天分享一些包括但不限于计算机基础、算法等相关的知识点?
linux shell vim 文件名 命令模式 -
Linux ❀ vi/vim多行前缀等长删除操作
文章目录1、使用vi/vim命令打开文件2、切换vi/vim模式3、选择需要删除
vim linux vim命令 删除操作 -
Linux运维必备技能:如何在 Vim 中删除多行?
我们都会犯错,犯错是人之常情,改进它也很重要。如果你在 Vim 中出错,你可以dw在普通模式下使
linux vim 正则表达式 删除行 -
vi/vim 编辑器的使用
移动光标h 左 j 下 k 上 l 右w 移动到下一个单词的词首e:跳至当前或下一个单词的词尾b:跳至
vim linux 3d 重做 显示行号 -
linux之vim编辑器
温故:在上一篇文章中给大家带来了关于管道符和重定向的知识,有兴趣的可以看看我的《Linux之管道符
vim 编辑器 linux 命令模式 输入模式 -
Hive Lateral View、视图与索引
1.Hive Lateral View Lateral View 用于和 UDTF 函数(explode、split)结合来使用。 首先通过 UDTF 函数拆分成多行,再将多行结果组合成一
hive hadoop 数据仓库 hdfs mapreduce -
Vimc常用运维查看命令,你会用吗
输入”vim 文件名”打开文件,刚刚时是”一般模式”。一般模式:可以浏览文件内容,可以进行文本快
vim linux redis 编辑文件 打开文件 -
大小不固定的图片、多行文字的水平垂直居中
想必写css的都知道如何让单行文字在高度固定的容器内垂直居中,但是您知道或者想过让行数不固
css ie 浏览器 div border