算法

vim7.3版本支持两种加密方式——PKzip算法(已知有缺陷的)、Blowfish算法(从7.3版本开始支持)、Blowfish2算法(从7.4.399版本开始支持)
而vim -x 默认采用PKzip算法加密。
在保存之前可以通过“:setlocal cm=blowfish”来设置加密算法。也可以在启动设定文件中加入此语句,如同设置启动配色方案一样。

blowfish算法跟MD5、SHA都计算的太快,就容易导致太容易破解(如果量子计算机突然取得突破的话,呵呵,目前还未突破)。本来以为vim是否会采用bcrypt算法,设置停顿时间,来让计算速度变得慢下来(正常使用感受不到,暴力破解时原先1秒破解的,现在大概需要3年吧...),可惜不是。

结论:
1、vim默认算法PKzip不适合加密太隐私的数据。
2、采用新版vim,采用blowfish算法后,加密文件本身是安全的。但是由于交换文件(可以关闭)、内存缓存(未加密)是不安全的,也就是过程不安全,所以,如果需要严格保密,也不宜使用vim加密。
3、vim加密过程还是挺容易误操作的(在不输入密码以乱码打开文件、以undo等方式操作文件过程中),且没有消息完整性验证机制,vim官方推荐加密要求高的用户采用PGP、GPG加密软件。

如果:version命令的输出信息中包含了+cryptv 选项, 那么说明你安装的Vim已经启用了加密功能。7.3之前的版本提供用于向后兼容的PkZip加密算法;自7.3版本开始提供较强的Blowfish加密算法;而从7.4.399版本开始支持更新的Blowfish2加密算法

vim --version | grep cryptv
+cryptv +lispindent +quickfix +wildmenu

使用以下命令,可以查看当前使用的加密算法:

:set cm?

使用以下命令,可以切换使用的不同加密算法:

:set cm=zip
:set cm=blowfish
:set cm=blowfish2

加密

我们可以使用Vim的-x启动参数,创建加密文件:

vim -x filename

Vim会要求你重复输入两次密钥。而当我们完成编辑并退出时,Vim就会对文本进行加密处理。此后,如果使用其它软件查看加密后的文件,那么将只会看到无意义的乱码;而如果使用Vim打开加密文件,则会要求你输入密钥以正确显示内容。

解密

使用以下命令将选项key置空,解除加密:

:set key=

我们也可以通以下命令,重置密钥:

:set key=secret

但以上命令将会以明文显示输入的密码,显然不够安全。而使用以下X(大写)命令,则会以星号*显示输入的密码,所以更加安全。

:X

安全

在编辑文件时所使用的交换文件(swap file)、撤销文件(undo file)和备份文件(backup file)也会同时被加密。当然我们也可以在命令行中利用-n参数,指定不使用交换文件(注意:不使用交换文件,我们也就不能够通过交换文件来恢复文件了。):

vim -x -n filename

由于viminfo文件并不会被加密,所以我们可以使用以下命令禁用vimifno文件:

:set viminfo=

vim 加密(crypt)文本文档的更多相关文章

  1. Java 把一个文本文档的内容复制到另一个文本文档

    src.txt放在工程目录下,dest.txt可创建,也可不创建.一旦运行程序,如果dest.txt不存在,将自行创建这个文本文档,再将src.txt中的内容复制到dest.txt import ja ...

  2. c#读取文本文档实践4-读入到list泛型集合计算后写入新文档

    商品 数量 单价英语 66 100语文 66 80数学 66 100化学 66 40物理 66 60 上面截图是要处理的文本文档内容,目的是计算出总价并加在最后一列. 这一篇与上一篇比较类似,目的相同 ...

  3. c#读取文本文档实践3-写入到文本本文档

    首先通过File.ReadAllLines()方法读入文本文档中内容并返回字符串数组contents,这样每行数据就成为了这个字符串数组contents的一个元素,再利用split()方法将每一个元素 ...

  4. c#读取文本文档实践2-计算商品价格

    商品 数量 单价英语 66 100语文 66 80数学 66 100化学 66 40物理 66 60 上面是文本文档中读入的数据. using System; using System.Collect ...

  5. c#读取文本文档实践1-File.ReadAllLines()

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  6. c#读写文本文档-1-用file类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  7. C# 读取文本文档(转)

    1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出. byte[] byData = ...

  8. matlab中读取txt数据文件(txt文本文档)

    matlab中读取txt数据文件(txt文本文档) 根据txt文档不同种类介绍不同的读取数据方法 一.纯数据文件(没有字母和中文,纯数字) 对于这种txt文档,从matalb中读取就简单多了 例如te ...

  9. 电脑右键新建文本文档(txt)消失的解决办法

    其实只需要一个注册表就可以了 下载地址http://pan.baidu.com/s/1hr7r0fM 拿走不谢! 注册表的内容是这样的,你也可以新建一个文件把后缀名改成.reg然后把下面的内容copy ...

随机推荐

  1. 如何正确可视化RAW(ARW,DNG,raw等格式)图像?

    为了正确可视化RAW图像,需要做好:白平衡.提亮以及色彩映射. import numpy as np import struct from PIL import Image import rawpy ...

  2. Centos 7 squid 用户认证

    一.安装安装过程十分简便,只需要安装一下squid,一条命令搞定yum install squidrpm -qa | grep squidsquid-3.5.20-2.el7_3.2.x86_64 二 ...

  3. ckeditor文本对齐方式添加,图片上传

    最近用的AdminBSBMaterialDesign-master模板,里边用到了ckeditor编辑器 但发现里边没有基本的文本对齐方式,找了好一会,好多方法都不管用,最后在config.js中添加 ...

  4. python web1(解析url)

    环境:pycharm 尝试对地址进行切片 去掉头 http 或 https a.遇到了一些问题 url = 'https://www.cnblogs.com/derezzed/articles/811 ...

  5. nodejs和mongodb常见的小错误

    1.直接使用nodejs会遇到以下问题: module.js:340    throw err;         ^Error: Cannot find module 'mongodb' 解决方式如下 ...

  6. Oracle单机Rman笔记[5]---脱机异地还原

    脱机异地还原(安装一个原环境相同的linux,并安装数据库,注意不要配置安装实例) .检查/home/oracle下的.bashrc .bash_profile内容是否与原环境一致(具体看情况而定), ...

  7. js删除数组中元素 delete 和splice的区别

    例如我有一个数组: var array = ["aa","dd","cc","aa"] ,我想删除这个数组的“dd”元素 ...

  8. socket架构

    套接字基本概念 Socket是应用层与Tcp/ip协议族通信的中间软件抽象层,它是一组接口.在设计模式中,socket其实就是一个门面模式,它把复杂的tcp/ip协议族隐藏在socket接口后面,对用 ...

  9. Python运行时的常见错误

    1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加冒号(:)(导致 “SyntaxError :invalid syntax”) 2)使用 ...

  10. abap将内表数据导出为excel文件

    一个不错的方案: WHEN 'EXPORT'. "导出数据 DATA : GT_TEMP TYPE TABLE OF TY_ITEM WITH HEADER LINE. LOOP AT GT ...