算法

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. JavaScript中函数立即调用的写法

     第一:在含数前面加一元运算符: //方法1 +function (i) { console.log('+'); }(1); //方法2 -function (i) { console.log('-' ...

  2. TP5.0 Redis(单例模式)(原)

    看到好多面试都问设计模式,我就简单的了解了一下,顺便把之前封装好的Reis做了一次修改. 单例模式(Singleton Pattern 单件模式或单元素模式) 单例模式确保某个类只有一个实例,而且自行 ...

  3. RuntimeError: Model class app_anme.models.User doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.---python学习错误记录

    untimeError: Model class app_anme.models.User doesn't declare an explicit app_label and isn't in an ...

  4. CentOS 7安装部署ELK 6.2.4-SUCCESS

    一.ELK介绍 ELK是三款开源软件的缩写,即:ElasticSearch + Logstash + Kibana.这三个工具组合形成了一套实用.易用的监控架构,可抓取系统日志.apache日志.ng ...

  5. Android使用Jenkins自动化构建测试打包apk

    Jenkins这东西搭建起来真是一点也不省心啊,看着别人的教程摸着石头过河,配置的东西有点多啊,稍有不慎,就构建不成功啦!即使步骤跟别人一样也会报各种乱七八糟的错误啊哈哈~~这东西只能佛系搭建~~在经 ...

  6. AJax提交表单数据到后台springmvc接收

    第一种方法直接用serialize()方法 function insert(){ $.ajax({ type:"POST", url:"${pageContext.req ...

  7. Django知识总结(三)

    拾伍 ● Ajax技术 一 ● Ajax定义 Ajax: 异步的 JavaScript 和 XML (Asynchronous+Javascript+XML) 通过Ajax, 我们可以在不重新加载整个 ...

  8. Struts中的匹配规则

    <constant name="struts.action.extension" value="action,do,htm"/> 表示之后后缀名为a ...

  9. java算法03 - 常用的8种排序算法

    Java常用的八种排序算法: 插入排序 - 直接插入排序 每次将待排序的记录按照关键字的大小,插入到前面已经排好序的记录的适当位置.直到全部记录插入完成. 代码实现 /** * 直接插入排序 O(n^ ...

  10. 消息队列kafka集群搭建

    linux系统kafka集群搭建(3个节点192.168.204.128.192.168.204.129.192.168.204.130)    本篇文章kafka集群采用外部zookeeper,没采 ...