网络安全 频道

Linux异构平台的数据加密

   无论是在Linux还是Windows操作系统平台,商用或免费的加密软件非常多。但同时在Linux和Windows中,都能快速地、自由地实现加解密的开源软件就不多见。下面就介绍如何快速实现跨平台的文件加解密。本文介绍的工具WizCrypt是使用java语言编写的所以可以通过安装Java虚拟机跨平台使用。

  1、什么是Java虚拟机

  Java虚拟机(JVM)是Java Virtual Machine的缩写,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的。Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。

  2、为什么使用Java虚拟机?

  Java语言最重要的特点就是可以在任何操作系统中运行。使用Java虚拟机就是为了支持与操作系统无关,在任何系统中都可以运行。

  3、 Java虚拟机的基本原理

  Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。 微软公司出于竞争策略考虑,在Windows 中不捆绑JVM。在此我们提供java虚拟机下载。

  4 、WizCrypt加密解密原理和流程


图2 WizCrypt加密的流程

  1. 首先WizCrypt是基于命令行的,通过密码文件对原文件进行加密,使用md5加密算法。

  2. 加密文件的前16位字节包括MD5的 hash值。

  3. 然后利用用户输入新的密码进行RC4算法加密并且输出。

  WizCrypt的解密的流程:

  1. 用户提供的MD5的 hash值首先进行计算。

  2. 把hash值和加密文件的前16位字节进行比对。

  3. 如果两者相同,则进行解密;否则提示用户并且自动退出。

  5 两个加密算法简介

   Md5算法:

  MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。

  请注意我使用了"字节串"而不是"字符串"这个词,是因为这种变换只与字节的值有关,与字符集或编码方式无关。MD5将任意长度的"字节串"变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串。从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。

  MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被"篡改"。举个例子,你将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。

  如果再有一个第三方的认证机构,用MD5还可以防止文件作者的"抵赖",这就是所谓的数字签名应用。MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的,用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不"知道"用户的密码是什么。

  RC4加密算法

  RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ron Rivest在1987年设计的密钥长度可变的流加密算法簇。之所以称其为簇,是由于其核心部分的S-box长度可为任意,但一般为256字节。该算法的速度可以达到DES加密的10倍左右。  RC4算法的原理很简单,包括初始化算法和伪随机子密码生成算法两大部分。

  根据目前的分析结果,没有任何的分析对于密钥长度达到128位的RC4有效,所以,RC4是目前最安全的加密算法之一,RC2是一种以64位连续的比特数据为单位的分组密码,而RC4则是一种单位数据不定的流密码。

  到此为止笔者介绍了数据加密技术下面我们将介绍WizCrypt加密在Linux 下和Windows下的实战。

0
相关文章