引:
数字证书有多种格式,对于经过base64编码的证书而言,如果你将所有内容合并成一行,微软操作系统还是能正确解析的,然而如果你使用OpenSSL的x509命令解析,就会报错,可见,微软的兼容行太强了,特别是对自己的东西。
今日工作中遇到合为一行的数字证书,在windows下可以被认出,然而在Linux下却不行,于是需要将一行的证书分解为64个字符一行的证书,然后加上-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----,本文解析两种方式,完成将一行证书变为N行base64编码证书的方式,两种方式均使用vim。
零.初始数据:
MIICBzCCAa8CCqwerC6hedfrvjAJBgabcdjOPQQBMIGKMQswCQYDVQQGEwJDTjELMAkGA1UECBMCU0gxETAPBgNVBAcTCFNoYW5na5678RYwFAYDVQQKEw1Lb2FsIFNvZnR3YXJlMRIwEAzGFpMLEwlTU0wgR1qazXAxDzANBgsdfgMTBmVjYy1jYTEeMBwGCSqGSIb3DQEJARYPZWNjLWNhQGtvYWwuY29tMB4XDTExMDExODsdfgUxM1oXDTExMDIxNzA0NDUxM1owgY4xCzAJBgNVBAYTAkNOMQswCQY2323IEwJTSDERMA8GA1UEBxMIU2hhbmdoYWkxFjAUBgNVBAoTDUtvYWwgU29mdHdhcmUxEuiopgNVBAsTCVNTTCBHcm91cDERMA8GA1UEAxMIZWNjLXVzZXIxIDAeBgkqhkiG9w0BCQEWEWV12341c2VyQGtvYWwuY29tMFkwEwYHKoZIzj0CAQYIKoEcgUUBgi0DQgAEl1iWcIeqYpigXDziJ4GS9M+23bE8qemaJvjpBOEXveF0eMJUN2udNJzHW/WpvTZrJCYp/mZsXnY+gdkAQIrXWjAJBgcqhkjOPQQBA0cAMEQCIGiWpXNEp4aKT2GzACBUvs0tZQLTan/ULKX/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
7.开始修改
:s/./{64/}//0/r/g
8.效果
MIICBzCCAa8CCqwerC6hedfrvjAJBgabcdjOPQQBMIGKMQswCQYDVQQGEwJDTjEL
MAkGA1UECBMCU0gxETAPBgNVBAcTCFNoYW5na5678RYwFAYDVQQKEw1Lb2FsIFNv
ZnR3YXJlMRIwEAzGFpMLEwlTU0wgR1qazXAxDzANBgsdfgMTBmVjYy1jYTEeMBwG
CSqGSIb3DQEJARYPZWNjLWNhQGtvYWwuY29tMB4XDTExMDExODsdfgUxM1oXDTEx
MDIxNzA0NDUxM1owgY4xCzAJBgNVBAYTAkNOMQswCQY2323IEwJTSDERMA8GA1UE
BxMIU2hhbmdoYWkxFjAUBgNVBAoTDUtvYWwgU29mdHdhcmUxEuiopgNVBAsTCVNT
TCBHcm91cDERMA8GA1UEAxMIZWNjLXVzZXIxIDAeBgkqhkiG9w0BCQEWEWV12341
c2VyQGtvYWwuY29tMFkwEwYHKoZIzj0CAQYIKoEcgUUBgi0DQgAEl1iWcIeqYpig
XDziJ4GS9M+23bE8qemaJvjpBOEXveF0eMJUN2udNJzHW/WpvTZrJCYp/mZsXnY+
gdkAQIrXWjAJBgcqhkjOPQQBA0cAMEQCIGiWpXNEp4aKT2GzACBUvs0tZQLTan/U
LKX/vTHZCv4FAiAb2s9u4G2SxgiEpWzhdMIuM3WsgbrazxsxSfLLG1234567
9.然而!然而
然而为什么在这个任务中,计算机程序使用了公式(正则表达式),而人类的方式却使用了按照步骤的方式(录制宏)呢?...
注释:上述第9点是动态方式和静态方式共同的结果。
分享到:
相关推荐
破解版vimx,新版...
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.这篇文章主要介绍了Vim快速合并行及vim 将文件所有行合并到一行,需要的朋友可以参考下
vim使用进阶vivivim使用进阶vim使用进阶m使用进阶m使用进阶vim使用进阶
vim由一个程序员开发,并且为更多的程序员所使用,所以vim对开发人员的强大支持,也就可以理解了。quickfix模式的引入就是一个例子。quickfix模式,是一种加速你开发的工作方式,使你不必离开vim,就可以快速的完成...
VIM的使用 VIM的使用VIM的使用VIM的使用VIM的使用
再也不用羡慕SublimeText的多光标编辑能力了,你在VIM中一样可以获得!
windows下可以使用linux的vim工具
本系列文章介绍我自己使用vim的一些经验,主要包括vim使用技巧、vim配置、vim命令、vim 插件等内容。本篇是序言,务虚为主。 在使用vim进行软件开发之前,我使用的工具是Source Insight,相信大家并不陌 生。...
Vim作为一种高效的视觉模型,具有计算和内存效率高、处理高分辨率图像能力强等优点。这使得Vim成为下一代视觉基础模型的理想选择。 本文使用Vim模型实现图像分类任务,模型选择最小的vim_tiny_patch16_224_...
centos7解决无法使用vim命令
VIM使用进阶 一篇介绍VIM高级使用技巧的文档,pdf格式
这是一个vim插件,允许用户使用vim像google doc
像IDE一样使用vim.pdf
Linux中vim安装包
像 IDE 一样使用 vim.zip,使用vim作为ide
vim用户手册中文版,vim使用进阶,使用vim提高你的文本编辑效率,学会使用vim必须的参考资料!!
使用 Vim 更多的是一种技能而 不是一种知识,Vim 的学习更需要的不是头脑而是双手,经常按书中的指示 进行示例性的操作,在学习 Vim 众多精致的技巧时,不要贪图一下子全都 掌握,最好是看一条技巧后,马上在编辑器...
教你如何方便地使用vim软件。vim使用更多的是一种技能而 不是一种知识,vim的学习需要的更多的不是头脑而是双手。