1.电脑如何给软件加密?

2.aes的加密标准

3.档案加密详细资料大全

4.如何设置无线路由WPA-PSK/WPA2-PSK AES加密方式。

5.求 VC++编写的文件夹加密软件代码 smzen@163.com

6.des和aes 加解密算法具体步骤?有例子最好

vc电脑系统aes加密步骤_vcs 加密

AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。美国国家标准与技术研究所(NIST)在2002年5月26日建立了新的高级数据加密标准(AES)规范。AES是一个新的可以用于保护电子数据的加密算法。

1998年National Institute of Standards and Technology(NIST)开始AES第一轮分析、测试和征集,共产生了15个候选算法。其中包括CAST-256, CRYPTON, DEAL, DFC, E2, FROG, HPC, LOKI97, MAGENTA, MARS,RC6, Rijndael, SAFER+, Serpent, Twofish。 其中五个候选算法进入第二轮: MARS, RC6, Rijndael, Serpent, andTwofish. 1999年3月完成了第二轮AES2的分析、测试,最终确认Rijndael算法获得胜利。NIST于2002年5月26日制定了新的高级加密标准(AES)规范。

AES是典型的对称加密算法,应用广泛。数据发信方将明文和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。其优点是对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,双方都使用同样钥匙,安全性得不到保证。

在此扯一下题外话,不对称加密算法,比如著名的RSA算法,使用两把完全不同但又是完全匹配的一对钥匙----公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且加密者知道收信方的公钥,只有解密者才是唯一知道自己私钥的人。

AES算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES使用几种不同的方法来执行排列和置换运算。AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。与公共密钥加密使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。密码学简介据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。

AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“state”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:

1.AddRoundKey — 矩阵中的每一个字节都与该次round key做XOR运算;每个子密钥由密钥生成方案产生。

2.SubBytes — 通过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。

3.ShiftRows — 将矩阵中的每个横列进行循环式移位。

4.MixColumns — 为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每内联的四个字节。

电脑如何给软件加密?

跟第三方联调的时候会碰到各种加密算法,所以总结一下。

AES不是将拿到的明文一次性加密,而是分组加密,就是先将明文切分成长度相等的块,每块大小128bit,再对每一小块进行加密。那么问题就来了,并不是所有的原始明文串能被等分成128bit,例如原串大小200bit,那么第二个块只有72bit,所以就需要对第二个块进行填充处理,让第二个块的大小达到128bit。常见的填充模式有

不进行填充,要求原始加密串大小必须是128bit的整数倍;

假设块大小8字节,如果这个块跟8字节还差n个字节,那么就在原始块填充n,直到满8字节。例:块{1,2,3},跟8字节差了5个字节,那么补全后的结果{1,2,3,5,5,5,5,5}后面是五个5,块{1,2,3,..7}跟8字节差了1个字节,那么补全后就是{1,2,3,...,7,1},就是补了一个1。

如果恰好8字节又选择了PKCS5Padding填充方式呢?块{1,2,3...8}填充后变成{1,2,3...8,8...8},原串后面被补了8个8,这样做的原因是方便解密,只需要看最后一位就能算出原块的大小是多少。

跟PKCS5Padding的填充方式一样,不同的是,PKCS5Padding只是对8字节的进行填充,PKCS7Padding可以对1~256字节大小的block进行填充。openssl里aes的默认填充方式就是PKCS7Padding

AES有多种加密模式,包括:ECB,CBC,CTR,OCF,CFB,最常见的还是ECB和CBC模式。

最简单的一种加密模式,每个块进行独立加密,块与块之间加密互不影响,这样就能并行,效率高。

虽然这样加密很简单,但是不安全,如果两个块的明文一模一样,那么加密出来的东西也一模一样。

openssl的相关函数:

CBC模式中引入了一个新的概念,初始向量iv。iv的作用就是为了防止同样的明文块被加密成同样的内容。原理是第一个明文块跟初始向量做异或后加密,第二个块跟第一个密文块做异或再加密,依次类推,避免了同样的块被加密成同样的内容。

openssl相关函数:

敲黑板!! 所以跟第三方对接的时候,如果对面说他们用aes加密,务必对他们发起灵魂三问:

签名的作用是让接受方验证你传过去的数据没有被篡改;加密的作用是保证数据不被窃取。

原理:你有一个需要被验签的原串A。

步骤一:选择hash算法将A进行hash得到hash_a;

步骤二:将hash_a进行加密,得到加密值encrypt_a;

步骤三:将原串A和加密的encrypt_a发给第三方,第三方进行验签。第三方先解密encrypt_a,得到一个hash值hash_a1,然后对原串A使用同样的hash算法进行hash,得到的即为加密前的hash_a,如果hash_a = hash_a1, 那么验签成功。

rsa使用私钥对信息加密来做签名,使用公钥解密去验签。

openssl相关函数:

注意:两个函数中的m,是原串hash后的值,type表示生成m的算法,例如NID_sha256表示使用sha256对原串进行的hash,返回1为签名成功或者验签成功,-1位为失败。

再次敲黑板!! 所以如果第三方说使用rsa验签,要让对方告知他们的hash算法。

首先明确,私钥加密不等于签名。加密的时候,使用使用公钥加密,第三方使用你的私钥进行解密。

openssl里公钥加密函数为RSA_public_encrypt,私钥解密函数为RSA_private_decrypt,具体的可以自己去查看下官方文档。

rsa也涉及到了填充方式,所以对接的时候也要问清楚

在使用公钥进行加密时,会发现每次加密出的结果都不一样,但使用私钥加密时,每次的结果都一样,网上查了一圈,说是因为填充方式的原因。

官方文档说明:

那么为什么一定要使用私钥做签名,公钥做加密,而不是公钥做签名,私钥做加密呢?

举个栗子:

aes的加密标准

问题一:怎样把电脑上的应用软件加密 厦门天锐公司的绿盾加密软件可以加密所有软件生成的文档。一般常用的已加到我们的软件列表上。

Word、Excel、PowerPoint、金山WPS、写字板、AutoCAD、Pro/E、UG、Solidworks、CAXA、Pretel DXP、开目CAD、 Soild Edge、Cimatron、Power Mill、Mentor、Esprit2004、3DMAX、犀牛、CorelDRAW、PhotoShop、Illustrator、中望CAD、浩辰CAD等、支持Visual C++、Delphi等,如果有特别的软件或者没有在这个列表上,可以自已添加。不需要厂家对新软件的分析。

绿盾采用国际先进的驱动加密技术,因此从技术平台本身是具有应用程序无关性的,可以对任意的软件和文件类型进行加密控制。

同时, 绿盾 也是国内 最先 一个完全开发策略库,允许用户自定义策略的加密软件。用户可以自己填写需要控制的应用程序、文件类型,并可自己选择加密的时机(如打开文件时加密、关闭文件时加密、修改文件时加密、重命名文件时加密等),同时可以自行定义对文件操作的权限(如拒绝读、拒绝写、拒绝创建、拒绝重命名、拒绝删除等)

《绿盾文件安全方案》

1.全新的驱动加密技术,直接在缓存中进行加解密,写硬盘的速度更快,加解密效率更高,几乎不改变windows运行速度。在windows缓存中保存的是密文,可以防止别有用心的人从windows缓冲中窃取明文数据,导致泄密。不但可以实现强制加密功能,而且也可以根据需要轻松的实现强制解密功能,更加符合企业的实际加密管理需求;

2.同时监控本地硬盘和网络驱动器的读写加密。对任何应用程序生成的任何文件进行加密控制。同时,透明加解密的过程中,不产生临时文件;

3.采用国际先进的AES和RC4两种加密算法的结合,它采用国际公认的AES和RC4两种加密算法相结合,来对文件和密钥进行加密,并为每个企业、每个部门、每个用户都单独分配一个独立的密钥,对每个文件加密都生成一个随机密钥。也就是说,同一个文件,分别加密两次,两次加密的密钥都是不同的。其次,还因为它采用了IBM公司出品的160位高强度加密算法,足以应付任何的恶意暴力破解;

4.加密后的文件始终处于加密状态,拷贝到任何地方,在任何环境下都是加密的,不依赖于加密软件。

问题二:如何给自己电脑中的软件加密使用 软件是不可以直接加密的,但是你可以给文件夹加密,把你用的软件放在一个文件夹里,加密文件夹!下面是文件夹加密/解密方法

一、加密文件或文件夹

步骤一:打开Windows资源管理器。

步骤二:右键单击要加密的文件或文件夹,然后单击“属性”。

步骤三:在“常规”选项卡上,单击“高级”。选中“加密内容以便保护数据”复选框

在加密过程中还要注意以下五点:

1.要打开“Windows 资源管理器”,请单击“开始→程序→附件”,然后单击“Windows 资源管理器”。

2.只可以加密NTFS分区卷上的文件和文件夹,FAT分区卷上的文件和文件夹无效。(注意重装系统时先解密,否则后果严重。)

3.被压缩的文件或文件夹也可以加密。如果要加密一个压缩文件或文件夹,则该文件或文件夹将会被解压。

4.无法加密标记为“系统”属性的文件,并且位于systemroot目录结构中的文件也无法加密。

5.在加密文件夹时,系统将询问是否要同时加密它的子文件夹。如果选择是,那它的子文件夹也会被加密,以后所有添加进文件夹中的文件和子文件夹都将在添加时自动加密。

二、解密文件或文件夹

步骤一:打开Windows资源管理器。

步骤二:右键单击加密文件或文件夹,然后单击“属性”。

步骤三:在“常规”选项卡上,单击“高级”。

步骤四:清除“加密内容以便保护数据”复选框。

同样,我们在使用解密过程中要注意以下问题:

1.要打开“Windows资源管理器”,请单击“开始→程序→附件”,然后单击“Windows资源管理器”。

2.在对文件夹解密时,系统将询问是否要同时将文件夹内的所有文件和子文件夹解密。如果选择仅解密文件夹,则在要解密文件夹中的加密文件和子文件夹仍保持加密。但是,在已解密文件夹内创立的新文件和文件夹将不会被自动加密。

以上就是使用文件加、解密的方法!

加密后还是可以删除的,不过可以隐藏掉你加密的文件。

问题三:怎样给电脑软件单个加密 1、修改文件后缀名。如:文档文件后缀名为“.doc”的,更改为.jpg或其它后缀名,别人就无法查看该文件的内容了。

2、将文件隐藏。将不想让别人看见的文件设为隐藏文件。

3、利用软件进行加密。

4、直接加密。方法是:右键单击所要加密的文件,选择“属性”,在弹出的对话框中找到最底下那一行,点击“高级”,弹出一个“高级属性”对话框,找到最下面一行,勾选“加密内容以便保护数据”,点击“确定”即可。

问题四:电脑桌面上的文件怎么加密 方法/步骤

很简单的事情,就是百度一下易捷文件夹加密软件,然后找到这个软件的下载地址,安装这个软件到电脑上,然后就可以正常使用了。

在电脑桌面上找到需要加密的文件夹,然后鼠标选择文件夹,右击,会出现选择使用该软件进行加密,然后会跳出一个选择进入软件的界面,按照软件提示进行操作即可。

3

此时大家只需要在跳出的页面中输入两次一模一样的密码哦,记得是两次一样的,确保一致。

4

最后点击加密就可以成功对文件夹进行加密了。

问题五:怎么给电脑的应用软件加密要密码才能启动打开?有些应用不想被人看到。 一般软件会自带加密设置,比如开启密码或者防查看密码;

如果软件没带加密功能,我想很难找到第三方软件支持你的应用软件加密;

但你可以在你系统里简单隐藏你的应用软件,设置只有你才知道的路径,比如设置对应执行文件为隐藏属性、设置访问权限等等

问题六:怎么把电脑里的个别软件锁住 锁住还不简单,加入权限呗,或者对文件夹进行加密,又或者指定2个账户,一个账户没有另一罚权限高,也看不到那些文件!

问题七:电脑怎么给软件加密,有的加密软件用了之后用其他方式还是可以打开 你可以把你的软件放一个文件夹里,进行文件夹加密,比较出名的文件夹加密软件eitool。。。或者最简单的,控制面板,文件夹选项,打开,有个隐藏文件夹,你右键选择那个文件夹,把隐藏打上对勾,就看不到了。。。纯手打,望采纳

问题八:电脑文件加密怎么设置 给文件夹加密有两种方法:

方法一: 右击文件夹--添加到压缩文件--高级--设置密码,不要忘记密码,否则就很难找回了。

方法二:还是建议直接下载个加密软件,更简单方便

方法三:隐藏文件 我的电脑-工具-文件夹选项-查看-不显示隐藏的文件-Ps 隐藏文件夹 点击文件属性

问题九:如何在电脑上给一个文件或文件夹加密? 1、进入您要行加密保护的文件夹中,在空白处单击鼠标右键,选择自定义文件夹...选项;

2、单击下一步选择自定义并在副选框中选择选择或编辑该文件夹的Html模板,单击下一步;

3、在选择模板类型中选择标准,并将编辑该模板选项选中,单击下一步;

4、在弹出的Folder文件中找到〈script language=JavaScript〉,在其下方顶头输入以下内容: var pass = prompt(请输入密码)  if(pass != 123) ---123处换成您自己设定的密码--- {window.location=c:}

5、保存Folder文件之后,选择完成,文件夹加密就完成了,您可以进行测试啦!

如果需要去掉保护,只需要把Folder文件修改回原样就好啦!

档案加密详细资料大全

对称密码体制的发展趋势将以分组密码为重点。分组密码算法通常由密钥扩展算法和加密(解密)算法两部分组成。密钥扩展算法将b字节用户主密钥扩展成r个子密钥。加密算法由一个密码学上的弱函数f与r个子密钥迭代r次组成。混乱和密钥扩散是分组密码算法设计的基本原则。抵御已知明文的差分和线性攻击,可变长密钥和分组是该体制的设计要点。

AES是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准。

AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。1998年NIST开始AES第一轮分析、测试和征集,共产生了15个候选算法。1999年3月完成了第二轮AES2的分析、测试。2000年10月2日美国政府正式宣布选中比利时密码学家Joan Daemen 和 Vincent Rijmen 提出的一种密码算法RIJNDAEL 作为 AES.

在应用方面,尽管DES在安全上是脆弱的,但由于快速DES芯片的大量生产,使得DES仍能暂时继续使用,为提高安全强度,通常使用独立密钥的三级DES。但是DES迟早要被AES代替。流密码体制较之分组密码在理论上成熟且安全,但未被列入下一代加密标准。

AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个(如果数据块及密钥长度不足时,会补齐)。AES加密有很多轮的重复和变换。大致步骤如下:1、密钥扩展(KeyExpansion),2、初始轮(Initial Round),3、重复轮(Rounds),每一轮又包括:SubBytes、ShiftRows、MixColumns、AddRoundKey,4、最终轮(Final Round),最终轮没有MixColumns。

如何设置无线路由WPA-PSK/WPA2-PSK AES加密方式。

档案加密是一种根据要求在作业系统层自动地对写入存储介质的数据进行加密的技术。包括WINDOWS自带的档案加密功能等。

基本介绍 中文名 :档案加密 定义 :对数据进行加密的技术 种数 :2 种类 :WINDOWS自带的档案加密功能等 主流 :磁碟加密和驱动级解密技术 算法 :对称IDEA 算法、非对称RSA算法 基本信息,加密功能,商业化软体,特点, 基本信息 档案加密按加密途径可分为两类: 一类是WINDOWS系统自带的档案加密功能,一类是采用加密算法实现的商业化加密软体.WINDOWS系统加密方法有五种,商业化的加密软体又分为驱动级加密和外挂程式级加密;如果按加密算法又可分为三类 :对称IDEA 算法、非对称RSA算法、不可逆AES算法. 加密功能 加密档案或资料夹 步骤一:打开Windows资源管理器。 步骤二:右键单击要加密的档案或资料夹,然后单击“属性”。 加密资料夹设计 步骤三:在“常规”选项卡上,单击“高级”。选中“加密内容以便保护数据”复选框 在加密过程中还要注意以下五点: 1.请单击“开始→程式→附属档案”,然后单击“Windows资源管理器”。 2.只可以加密NTFS分区卷上的档案和资料夹,FAT分区卷上的档案和资料夹无效。 3.被压缩的档案或资料夹也可以加密。如果要加密一个压缩档案或资料夹,则该档案或资料夹将会被解压。 4.无法加密标记为“系统”属性的档案,并且位于systemroot目录结构中的档案也无法加密。 5.在加密资料夹时,系统将询问是否要同时加密它的子资料夹。如果选择是,那它的子资料夹也会被加密,以后所有添加进资料夹中的档案和子资料夹都将在添加时自动加密。 解密档案或资料夹 步骤一:打开Windows资源管理器。 步骤二:右键单击加密档案或资料夹,然后单击“属性”。 加密后特别档案 步骤三:在“常规”选项卡上,单击“高级”。 步骤四:清除“加密内容以便保护数据”复选框。 同样,我们在使用解密过程中要注意以下问题: 1. 请单击“开始→程式→附属档案”,打开“Windows资源管理器”。 2. 在对资料夹解密时,系统将询问是否要同时将资料夹内的所有档案和子资料夹解密。如果选择仅解密资料夹,则在要解密资料夹中的加密档案和子资料夹仍保持加密。但是,在已解密资料夹内创立的新档案和资料夹将不会被自动加密。 以上就是使用档案加、解密的方法!而在使用过程中我们也许会遇到以下一些问题,在此作以下说明: 1. 高级按钮不能用原因:加密档案系统(EFS)只能处理NTFS档案系统卷上的档案和资料夹。如果试图加密的档案或资料夹在FAT或FAT32卷上,则高级按钮不会出现在该档案或资料夹的属性中。 解决方案: 将卷转换成带转换实用程式的NTFS卷。 打开命令提示符。 键入:Convert [drive]/fs:ntfs(drive 是目标驱动器的驱动器号) 2. 当打开加密档案时,显示“拒绝访问”讯息原因:加密档案系统(EFS)使用公钥证书对档案加密,与该证书相关的私钥在本计算机上不可用。解决方案:查找合适的证书的私钥,并使用证书管理单元将私钥导入计算机并在本机上使用。 3. 用户基于NTFS对档案加密,重灌系统后加密档案无法被访问的问题的解决方案(注意:重装Win2000/XP前一定要备份加密用户的证书): 步骤一:以加密用户登录计算机。 步骤二:单击“开始→运行”,键入“mmc”,然后单击“确定”。 步骤三:在“控制台”选单上,单击“添加/删除管理单元”,然后单击“添加”。 步骤四:在“单独管理单元”下,单击“证书”,然后单击“添加”。 步骤五:单击“我的用户账户”,然后单击“完成”(如图2,如果你加密用户不是管理员就不会出现这个视窗,直接到下一步) 。 步骤六:单击“关闭”,然后单击“确定”。 步骤七:双击“证书──当前用户”,双击“个人”,然后双击“证书”。 步骤八:单击“预期目的”栏中显示“加密档案”字样的证书。 步骤九:右键单击该证书,指向“所有任务”,然后单击“导出”。 步骤十:按照证书导出向导的指示将证书及相关的私钥以PFX档案格式导出(注意:推荐使用“导出私钥”方式导出,这样可以保证证书受密码保护,以防别人盗用。另外,证书只能保存到你有读写许可权的目录下)。 4. 保存好证书注意将PFX档案保存好。以后重灌系统之后无论在哪个用户下只要双击这个证书档案,导入这个私人证书就可以访问NTFS系统下由该证书的原用户加密的资料夹(注意:使用备份恢复功能备份的NTFS分区上的加密资料夹是不能恢复到非NTFS分区的)。 最后 要提一下,这个证书还可以实现下述用途: (1)给予不同用户访问加密资料夹的许可权。 将我的证书按“导出私钥”方式导出,将该证书发给需要访问这个资料夹的本机其他用户。然后由他登录,导入该证书,实现对这个资料夹的访问。 (2)在其也WinXP机器上对用“备份恢复”程式备份的以前的加密资料夹的恢复访问许可权。 将加密资料夹用“备份恢复”程式备份,然后把生成的Backup.bkf连同这个证书拷贝到另外一台WinXP机器上,用“备份恢复”程式将它恢复出来(注意:只能恢复到NTFS分区)。然后导入证书,即可访问恢复出来的档案了。 Win98加密资料夹方法 资料夹属性法 在“Windows资源管理器”视窗,右键单击要加密的资料夹,单击“属性”,选中“隐藏”复选框。在注册表的“HKEY_LOCAL_MACHINE\Sofare\Microsoft\Windows\CurrentVersion\explorer\Advanced\Folder\Hidden\SHOWALL”分支下,将“CheckedValue”的键值设定为数字“0”。以后,即使在“Windows资源管理器”视窗,单击“查看”选单中的“资料夹选项”,单击“查看”选项卡,选中“显示所有档案”复选钮,也无法看到具有隐藏属性的资料夹。 资源回收筒法 首先确认选中了“显示所有档案”复选钮,并且注册表中“CheckedValue”的键值为“1”。然后,在“Windows资源管理器”视窗,右键单击 “C:\RECYCLED”资料夹(这是C糟上“资源回收筒”对应的资料夹),再单击“属性”,单击“常规”选项卡,清除“启用缩略图方式查看”和“唯读”复选框,单击“确定”按钮。关闭并重新启动“Windows资源管理器”后,将会看到“C:\RECYCLED”资料夹中有一个desk.ini档案。把该档案复制到要加密的资料夹中,并把该资料夹设为“唯读”属性。 档案管理器法 单击“开始/运行”,键入“winfile”,单击“确定”按钮,打开“档案管理器”视窗,单击“查看”选单中的“按档案类型”,选中“显示隐藏/系统档案”复选框,单击“确定”按钮。把要加密的资料夹拖到“C:\RECYCLED”资料夹或者其他分区的“RECYCLED”资料夹。这样,在“我的电脑”或“Windows资源管理器”视窗中就看不到这个资料夹了。 设定密码法 1、打开“资源管理器”,选定要加密或要保护的资料夹(档案目录),在其中空白处单击滑鼠右键,选择“自定义资料夹…”选项; 2、在“自定义资料夹”的复选框中,选择“创建或编辑HTML文档”,并单击“下一步”,系统准备启动HTML编辑器; 3、单击“下一步”,系统启动HTML编辑器,自动打开Folder.htt文档; 4、编辑Folder.htt文档,搜寻“JavaScript”字元,在下方顶头输入以下3行内容: var pass = prompt("请输入密码") if(pass != "ABC") {window.location="E:"}; 5、保存Folder.htt文档并退出编辑,选择“完成”;到此,对资料夹的加密或保护便已完成; 6、加密测试,关闭已打开的所有文档及资料夹,重新打开“资源管理器”,点击已加密的资料夹,系统便会提示输入密码,输入正确的密码(本文设定的密码为ABC)就可以访问该资料夹,反之则会转入E盘而无法访问,从而保护该资料夹及其中的文档。 档案加密的五种方法 使用 组策略工具 把存放隐私资料的硬碟分区设定为不可访问。详细方法:首先在末尾选单中选择 “ 运转 ” 输入gpedit.msc回车,翻开组战略配置视窗。选择 “ 用户配置 ” -> 管理模板 ” -> Window资源管理器” 双击右边的防止从 “ 电脑 ” 访问驱动器” 选择 “ 已启用 ” 然后在选择下列组合中的一个 ” 下拉组合框中选择你希望限制的驱动器,点击确定就可以了 这时,假设你双击试图翻开被限制的驱动器,将会出现错误对话框,提示 “ 本次操作由于这台计算机的限制而被取消。请与您的系统管理员联络 ” 这样就可以防止大部分黑客顺序和病毒侵犯你隐私了,绝大多数磁碟加密软体的功用都是使用这个小技巧完成的。这种加密方法比较适用,但是其缺陷在于安全系数很低。凶猛一点的电脑高手或许病毒顺序通常都知道怎样修正组战略,也可以把用户设定的组战略限制取消掉。因此这种加密方法不太适宜对失密强度要求较高的用户。 使用注册表中的设定 把某些驱动器设定为隐藏。隐藏驱动器方法如下:注册表的HKEY_CURRENT_USER\Sofare\Microsoft\Windows\CurrentVersion\Policies\Explor中新建一个 DWORD 值,命名为 NoDriv 并为它赋上相应的值。例如想隐藏驱动器 C 就赋上十进制的 4 留意一定要在赋值对话框中设定为十进制的 4 假设我新建的 NoDriv 想隐藏 A B C 三个驱动器,那么只需求将 A B C 驱动器所对应的 DWORD 值加起来就可以了同样的假设我需求隐藏 D F G 三个驱动器,那么 NoDriv 就应该赋值为 8+32+64=104 怎样样,应该明白了如何隐藏对应的驱动器吧。大部分磁碟隐藏软体的功用都是使用这个小技巧完成的,隐藏之后, WIndow 下面就看不见这个驱动器了,也就不用担忧别人偷窥你隐私了 使用 Window 自带的 磁碟管理 网路上引见加密方法一和加密方法二的知识性文章已经很多,已经为大家所熟习了但是加密方法三却较少有人知道。专家就在这里告诉大家一个秘密:使用 Window 自带的磁碟管理 ” 组件也可以完成硬碟隐藏! 详细操作步骤如下:右键 “ 电脑 ” -> 管理 ” 翻开 “计算机管理” 配置视窗。选择 “存储” -> 磁碟管理 ” 选定你希望隐藏的驱动器,右键选择 “ 更改驱动器名和途径 ” 然后在出现的对话框中选择 “ 删除 ” 即可。很多用户在这里不敢选择 “ 删除 ”, 惧怕把数据弄丢了,其实这里完全不用担忧, Window 仅仅只是删除驱动器的核心空间的符号连结,并不会删除逻辑分区。假设要取消隐藏驱动器,重复上述进程,这里选择选择 “ 添加 ” 即可。 这种方法的安全系数和前面的方法差不多,由于其他电脑高手或许病毒顺序也可以反其道而行之,把你隐藏的驱动器给找回来。 使用 WinRA R 可以绝对安全地为你 数据加密 大家一提起 WinRA R 总是会想到强大的紧缩功用,其实, WinRA R 加密功用同样很强大。 WinRA R 采用的单向加密,而单向加密是不可以被破解的因此,假设我需求维护隐私,只需把这些隐私档案紧缩成一个包,并且加上密码,就绝对安全了,任何黑客和电脑高手都不可以窃取到隐私。 简单档案加密方法 创建 1.在运行中输入cmd,回车 2.切换到想要建立资料夹的硬碟分区,如D糟输入:d:回车 3.输入md新建资料夹..\ 回车,注意资料夹名后有2个小数点 D糟下面就有了一个名为新建资料夹.的资料夹它是既不能进入又不能被删除的!不信你就试试看吧 删除 1.在运行中输入cmd,回车. 2.输入:D:回车然后输入 rd新建资料夹..\回车, 即可删除,当然删除前请确认里面的档案都是不需要的,不要删错了。 查看 1.在运行中输入cmd,回车 2.在命令行视窗中输入 start D:\新建资料夹../这里一定要是资料夹的绝对路径,否则无法打开即可 打开此资料夹。 商业化软体 档案加密算法 国内防泄密系统常用的加密算法有三种,IDEA 算法、RSA算法、AES算法,加密强度来讲,AES算法加密强度最高。 IDEA 算法 IDEA算法属于对称加密算法,对称加密算法中,数据加密和解密采用的都是同一个密钥,因而其安全性依赖于所持有密钥的安全性。 目前最常见的对称加密算法为数据加密标准DES算法,但传统的DES算法由于只有56位的密钥,因此已经不适应当今分散式开放网路对数据加密安全性的要求。欧洲数据加密标准IDEA等,目前加密强度最高的对称加密算法是128位的DES加密算法。 对称加密算法的主要优点是加密和解密速度快,加密效率高,且算法公开. 缺点是实现密钥的秘密分发困难,在大量用户的情况下密钥管理复杂,而且无法完成身份认证等功能,不便于套用在网路开放的环境中。 由于加密算法是公开的,所以被破解的风险比较高。 对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高、被破解风险高。 RSA 算法 RSA算法是非对称加密算法,非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要,但加密和解密花费时间长、速度慢,它不适合于对档案加密而只适用于对少量数据进行加密。 对称加密算法、非对称加密算法和不可逆加密算法可以分别套用于数据加密、身份认证和数据安全传输。 RSA算法是建立在大数分解和素数检测的理论基础上。 RSA密钥的产生过程: 独立地选取两个互异的大素数p和q(保密)。 计算n=p×q(公开),则ф(n)=(p-1)*(q-1)(保密) 随机选取整数e,使得1<e<ф(n)并且gcd(ф(n),e)=1(公开) 计算d,d=e-1mod(ф(n))保密。 RSA私有密钥由{d,n},公开密钥由{e,n}组成 RSA的加密/解密过程: 首先把要求加密的明文信息M数位化,分块; 然后,加密过程:C=Me(mod n) 解密过程:M=Cd(mod n) 非对称密钥加密体制的优点与缺点: 解决了密钥管理问题,通过特有的密钥发放体制,使得当用户数大幅度增加时,密钥也不会向外扩散;由于密钥已事先分配,不需要在通信过程中传输密钥,安全性大大提高;具有很高的加密强度。 与对称加密体制相比,非对称加密体制的加密、解密的速度较慢、被破解风险较小。 AES加密算法 AES加密算法属于对称加密算法, 对称加密算法的特征是加密过程中需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据需要密钥才能解密。 1997年4月15日,美国国家标准和技术研究所NIST发起了征集AES算法的活动,并成立了专门的AES工作组,目的是为了确定一个非保密的,公开披露的,全球免费使用的分组密码算,法用于保护下一世纪 *** 的敏感信息,并希望成为秘密和公开部门的数据加密标准.1997年9月12日,在联邦登记处公布了征集AES候选算法的通告.AES的基本要求是比三重DES快而且至少和三重DES一样安全,分组长度128比特,密钥长度为128/192/256比特.1998年8月20日,NIST召开了第一次候选大会,并公布了15个候选算法.1999年3月22日举行了第二次AES候选会议,从中选出5个.AES将成为新的公开的联邦信息处理标准(FIPS--Federal Information Processing Standard),用于美国 *** 组织保护敏感信息的一种特殊的加密算法.美国国家标准技术研究所(NIST)预测AES会被广泛地套用于组织,学院及个人.入选AES的五种算法是MARS,RC6,Serpent,Twofish,Rijndael.2000年10月2日,美国商务部部长NormanY. Mia宣布,经过世界著名密码专家之间的竞争,Rijndael数据加密算法最终获胜. 为此而在全球范围内角逐了数年的激烈竞争宣告结束.这一新加密标准的问世将取代DES、RSA数据加密标准,成为21世纪保护国家敏感信息的高级算法。 与DES、RSA加密算法相比,AES加密算法的优点为加解密的速度更快、加密强度最高、且不占用硬体资源。 常用几种的档案加密软体 随着信息化的高速发展,人们对信息安全的需求接踵而至,人才竞争、市场竞争、金融危机、敌特机构等都给企事业单位的发展带来巨大风险,内部窃密、黑客攻击、无意识泄密等窃密手段成为了人与人之间、企业与企业之间、国与国之间的安全隐患。 市场的需求、人的安全意识、环境的诸多因素促使着我国的信息安全高速发展,信息安全经历了从传统的单一防护如防火墙到信息安全整体解决方案、从传统的老三样防火墙、入侵检测、防毒软体到多元化的信息安全防护、从传统的外部网路防护到区域网路安全、主机安全等。 传统数据加密技术分析 信息安全传统的老三样(防火墙、入侵检测、防病毒)成为了企事业单位网路建设的基础架构,已经远远不能满足用户的安全需求,新型的安全防护手段逐步成为了信息安全发展的主力军。例如主机监控、慧点科技文档加密等技术。 在新型安全产品的伫列中,主机监控主要采用外围围追堵截的技术方案,虽然对信息安全有一定的提高,但是因为产品自身依赖于作业系统,对数据自身没有有效的安全防护,所以存在着诸多安全漏洞,例如:最基础的手段拆拔硬碟、winpe光碟引导、USB引导等方式即可将数据盗走,而且不留任何痕迹;此技术更多的可以理解为企业资产管理软体,单一的产品无法满足用户对信息安全的要求。 文档加密是现今信息安全防护的主力军,采用透明加解密技术,对数据进行强制加密,不改变用户原有的使用习惯;此技术对数据自身加密,不管是脱离作业系统,还是非法脱离安全环境,用户数据自身都是安全的,对环境的依赖性比较小。市面上的文档加密主要的技术分为磁碟加密、套用层加密、驱动级加密等几种技术,套用层加密因为对应用程式的依赖性比较强,存在诸多兼容性和二次开发的问题,逐步被各信息安全厂商所淘汰。 当今主流的两大数据加密技术 我们所能常见到的主要就是磁碟加密和驱动级解密技术: 全盘加密技术是主要是对磁碟进行全盘加密,并且采用主机监控、防水墙等其他防护手段进行整体防护,磁碟加密主要为用户提供一个安全的运行环境,数据自身未进行加密,作业系统一旦启动完毕,数据自身在硬碟上以明文形式存在,主要靠防水墙的围追堵截等方式进行保护。磁碟加密技术的主要弊端是对磁碟进行加密的时间周期较长,造成项目的实施周期也较长,用户一般无法忍耐;磁碟加密技术是对磁碟进行全盘加密,一旦作业系统出现问题。需要对数据进行恢复也是一件让用户比较头痛的事情,正常一块500G的硬碟解密一次所需时间需要3-4个小时;磁碟加密技术相对来讲真正要做到全盘加密还不是非常成熟,尤其是对系统盘的保护,至今市面上的主要做法是对系统盘不做加密防护,而是采用外围技术进行安全访问控制,大家知道作业系统的版本不断升级,微软自身的安全机制越来越高,人们对系统的控制力度越来越低,尤其黑客技术层层攀高,一旦防护体系被打破,所有一切将暴露无疑。另外,磁碟加密技术是对全盘的信息进行安全管控,其中包括系统档案,对系统的效率性能将大大影响。 驱动级技术是当今信息加密的主流技术,采用进程+后缀的方式进行安全防护,用户可以根据企事业单位的实际情况灵活配置,对重要的数据进行强制加密,大大提高了系统的运行效率。驱动级加密技术与磁碟加密技术的最大区别就是驱动级技术会对用户的数据自身进行保护,驱动级加密采用透明加解密技术,用户感觉不到系统的存在,不改变用户的原有操作,数据一旦脱离安全环境,用户将无法使用,有效提高了数据的安全性;另外驱动级加密技术比磁碟加密技术管理可以更加细粒度,有效实现数据的全生命周期管理,可以控制档案的使用时间、次数、复制、截屏、录像等操作,并且可以对档案的内部进行细粒度的授权管理和数据的外出访问控制,做到数据的全方位管理。驱动级加密技术在给用户的数据带来安全的同时,也给用户的使用便利性带来一定的问题,驱动级加密采用进程加密技术,对同类档案进行全部加密,无法有效区别个人档案与企业档案数据的分类管理,个人电脑与企业办公的并行运行等问题。 特点 1、多功能:对文字、档案、资料夹快速加密; 2、安全高效:采用高度成熟原创加密算法,安全加密,杜绝破解; 3、绑定计算机:绑定计算机加密的档案在其它计算机上不能解密; 4、时限功能:设定开始解密时间和过期永久锁定时间,非设定时间段内不能解密; 5、数据保护:采用擦除数据功能,绝对限制任何数据恢复、还原工具对删除的档案进行数据恢复; 6、多账户独立加密:不同的账户就算使用相同的密码加密,账户之间也有独立的解密许可权,相互保密; 7、集中分类管理资料:使用单一面板管理各类档案、私密信息,轻松实现日记本、电子相册、影音播放器、无痕网页浏览器等功能,对所有档案的操作在退出界面后都自动处于加密状态; 8、高强度安全保障:使用登录密码、账户名、加密密码三重保护,密码最长支持200位,使您的数据得到全方位安全保障。 加密图册

求 VC++编写的文件夹加密软件代码 smzen@163.com

1、通过电脑端的浏览器进入到路由器的设置界面。浏览器地址栏输入“192.168.1.1”并回车访问该地址。

2、会弹出一个对话框,需要输入用户名和密码。一般的用户名为admin,密码为admin。单击却确定进行登录。

3、点击?无线设置?>>?基本设置,将SSID号?修改为数字或字母组合的名称,点击?保存。如下图:

4、然后点击?无线设置?>>?无线安全设置,选中?WPA-PSK/WPA2-PSK,认证类型选择?自动,加密算法选择?AES,PSK密码?输入至少8位的密码,点击?保存,这样就完成了。

des和aes 加解密算法具体步骤?有例子最好

// AesCodeDlg.cpp : implementation file

//

#include "stdafx.h"

#include "AesCode.h"

#include "AesCodeDlg.h"

#include "Aes.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

// Dialog Data

//{{AFX_DATA(CAboutDlg)

enum ;

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

// No message handlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CAesCodeDlg dialog

CAesCodeDlg::CAesCodeDlg(CWnd* pParent /*=NULL*/)

: CDialog(CAesCodeDlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CAesCodeDlg)

// NOTE: the ClassWizard will add member initialization here

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CAesCodeDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAesCodeDlg)

DDX_Control(pDX, IDC_EnDeProg, m_prog);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAesCodeDlg, CDialog)

//{{AFX_MSG_MAP(CAesCodeDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_BAesEn, OnBAesEn)

ON_BN_CLICKED(IDC_BAesDe, OnBAesDe)

ON_BN_CLICKED(IDC_BFile, OnBFile)

ON_BN_CLICKED(IDC_BFileEn, OnBFileEn)

ON_BN_CLICKED(IDC_BFileDe, OnBFileDe)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CAesCodeDlg message handlers

BOOL CAesCodeDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

SetDlgItemText(IDC_EAesEn,"0123456789abcdef");

EnDe_filename="";

m_prog.SetRange(0,100);

m_prog.SetPos(0);

return TRUE; // return TRUE unless you set the focus to a control

}

void CAesCodeDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

// If you add a minimize button to your dialog, you will need the code below

// to draw the icon. For MFC applications using the document/view model,

// this is automatically done for you by the framework.

void CAesCodeDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

// The system calls this to obtain the cursor to display while the user drags

// the minimized window.

HCURSOR CAesCodeDlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

////////////////////////////////////////////////////////////////////////////////////////////////

//Aes字符串加密

void CAesCodeDlg::OnBAesEn()

{

// TODO: Add your control notification handler code here

unsigned char inBuff[25],ouBuff[25];

memset(inBuff,0,25);

memset(ouBuff,0,25);

Aes aes(24,(unsigned char*)"\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\xa\xb\xc\xd\xe\xf\x10\x11\x12\x13\x14\x15\x16\x17");

GetDlgItemText(IDC_EAesEn,(char*)inBuff,24);

if(strlen((char*)inBuff)>16)MessageBox("本例只能加密16字节的字符串,大于截断");

aes.Cipher(inBuff,ouBuff); //因为输出为16个字节,每个字节用两个字母或数字表示。

CString str="",strTmp; //实际输出是32个字母或数字,否则ASCII码值超出127的会变成乱码。

for(int i=0;i<16;i++)

{

strTmp.Format("%02x",ouBuff[i]); //其实相当于把ouBuff的ASCII值这个数字以16进制的形式输出

str+=strTmp;

}

//MessageBox(str,"加密后");

SetDlgItemText(IDC_EAesEn,str);

}

////////////////////////////////////////////////////////////////////////////////////////////////

//Aes字符串解密

void CAesCodeDlg::OnBAesDe()

{

// TODO: Add your control notification handler code here

unsigned char inBuff[33],ouBuff[25]; //还是要注意32个字符的字符串需要用33个字节来存储,

//因为有个结束符,太恶心了

memset(inBuff,0,32);

memset(ouBuff,0,25);

Aes aes(24,(unsigned char*)"\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\xa\xb\xc\xd\xe\xf\x10\x11\x12\x13\x14\x15\x16\x17");

GetDlgItemText(IDC_EAesEn,(char*)inBuff,33);

unsigned char temp[25];

for(int j=0;j<16;j++)

{

temp[j]=char2num(inBuff[2*j])*16+char2num(inBuff[2*j+1]);// 将字符字面表示的16进制ASCII码值转换成真正的ASCII码值

}

aes.InvCipher(temp,ouBuff);//"dda97ca4......ec0d7191"

SetDlgItemText(IDC_EAesDe,CString(ouBuff));

}

////////////////////////////////////////////////////////////////////////////////////////////////

//字符ASCII码值到字符字面值的转换 如 '0'转换成0, 'a'转换成10

int CAesCodeDlg::char2num(char ch)

{

if(ch>='0'&&ch<='9')return ch-'0';

else if(ch>='a'&&ch<='f')return ch-'a'+10;

return -1;

}

////////////////////////////////////////////////////////////////////////////////////////////////

//文件选择框

void CAesCodeDlg::OnBFile()

{

// TODO: Add your control notification handler code here

CFileDialog fdlg(1,NULL,NULL,OFN_HIDEREADONLY ,"All Files(*.*)|*.*||");

if(IDOK!=fdlg.DoModal())return;

EnDe_filename=fdlg.GetPathName();

SetDlgItemText(IDC_EFile,EnDe_filename);

}

////////////////////////////////////////////////////////////////////////////////////////////////

//Aes文件加密

void CAesCodeDlg::OnBFileEn()

{

// TODO: Add your control notification handler code here

if(EnDe_filename=="")return;

FILE* finput;

FILE* foutput;

finput=fopen((LPCTSTR)EnDe_filename,"rb");

if(!finput)

{

MessageBox("文件打开错误","出错",MB_OK);

return;

}

fseek(finput,0,SEEK_END);

long lFileLen=ftell(finput); //ftell()函数返回文件位置指示符的当前值,即如果现在是在文件结尾,则这个值就是文件长度

fseek(finput,0,SEEK_SET);

long blocknum=lFileLen/16;

long leftnum=lFileLen%16;

EnDe_filename+=".en";

foutput=fopen((LPCTSTR)EnDe_filename,"wb");

if(!foutput)

{

MessageBox("文件打开错误","出错",MB_OK);

fclose(finput);

return;

}

unsigned char inBuff[25],ouBuff[25];

Aes aes(16,(unsigned char*)"\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\xa\xb\xc\xd\xe\xf");

for(long i=0;i<blocknum;i++)

{

fread(inBuff,1,16,finput); //读取16个对象,每个对象的长度是1字节

aes.Cipher(inBuff,ouBuff);

fwrite(ouBuff,1,16,foutput);

m_prog.SetPos(int(100*i/blocknum)); //加密进度条进度设置

}

if(leftnum)

{

memset(inBuff,0,16);

fread(inBuff,1,leftnum,finput);

aes.Cipher(inBuff,ouBuff);

fwrite(ouBuff,1,16,foutput);

}

fclose(finput);

fclose(foutput);

MessageBox("加密成功!");

SetDlgItemText(IDC_EFile,EnDe_filename);

m_prog.SetPos(0);

}

////////////////////////////////////////////////////////////////////////////////////////////////

//Aes文件解密

void CAesCodeDlg::OnBFileDe()

{

// TODO: Add your control notification handler code here

if(EnDe_filename=="")return;

FILE* finput;

FILE* foutput;

finput=fopen((LPCTSTR)EnDe_filename,"rb");

if(!finput)

{

MessageBox("文件打开错误","出错",MB_OK);

return;

}

fseek(finput,0,SEEK_END);

long lFileLen=ftell(finput); //ftell()函数返回文件位置指示符的当前值,即如果现在是在文件结尾,则这个值就是文件长度

fseek(finput,0,SEEK_SET);

long blocknum=lFileLen/16;

long leftnum=lFileLen%16;

EnDe_filename+=".de";

foutput=fopen((LPCTSTR)EnDe_filename,"wb");

if(!foutput)

{

MessageBox("文件打开错误","出错",MB_OK);

fclose(finput);

return;

}

unsigned char inBuff[25],ouBuff[25];

Aes aes(16,(unsigned char*)"\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\xa\xb\xc\xd\xe\xf");

for(long i=0;i<blocknum;i++)

{

fread(inBuff,1,16,finput); //读取16个对象,每个对象的长度是1字节

aes.InvCipher(inBuff,ouBuff);

fwrite(ouBuff,1,16,foutput);

m_prog.SetPos(int(100*i/blocknum)); //加密进度条进度设置

}

if(leftnum)

{

MessageBox("文件可能已损坏或非经aes加密过");

}

fclose(finput);

fclose(foutput);

MessageBox("解密成功!");

SetDlgItemText(IDC_EFile,EnDe_filename);

m_prog.SetPos(0);

}

要源程序和全部代码给我邮箱我给你发过去。

随着计算机网络和计算机通讯技术的发展,计算机密码学得到前所未有的重视并迅速普及和发展起来。由于密码系统的各种性能主要由密码算法所决定,不同的算法决定了不同的密码体制,而不同的密码体制又有着不同的优缺点:有的密码算法高速简便,但加解密密钥相同,密钥管理困难;有的密码算法密钥管理方便安全,但计算开销大、处理速度慢。基于此,本文针对两种典型的密码算法DES和RSA的特点进行讨论分析,并提出一种以这两种密码体制为基础的混合密码系统,来实现优势互补。

1 密码系统简介

1.1 密码系统分类

密码系统从原理上可分为两大类,即单密钥系统和双密钥系统。单密钥系统又称为对称密码系统,其加密密钥和解密密钥或者相同,或者实质上相同,即易于从一个密钥得出另一个,如图1所示。双密钥系统又称为公开密钥密码系统,它有两个密钥,一个是公开的,用K1表示,谁都可以使用;另一个是私人密钥,用K2表示,只由采用此系统的人掌握。从公开的密钥推不出私人密钥,如图2所示。

1.2 两种密码系统分析

1.2.1 对称密码系统(单钥密码系统)

对称密码系统中加密和解密均采用同一把密钥,而且通信双方必须都要获得这把密钥。这就带来了一系列问题。首先,密钥本身的发送就存在着风险,如果在发送中丢失,接受方就不可能重新得到密文的内容;其次,多人通信时密钥的组合的数量会出现爆炸性的膨胀,N个人两两通信,需要N*(N-1)/2把密钥,增加了分发密钥的代价和难度;最后,由于通信双方必须事先统一密钥,才能发送保密的信息,这样,陌生人之间就无法发送密文了。

1.2.2 公开密钥密码系统(双钥密码系统)

公开密钥密码系统中,收信人生成两把数学上关联但又不同的公钥和私钥,私钥自己保存,把公钥公布出去,发信人使用收信人的公钥对通信文件进行加密,收信人收到密文后用私钥解密。公开密钥密码系统的优势在于,首先,用户可以把用于加密的钥匙公开地发给任何人,并且除了持有私有密钥的收信人之外,无人能解开密文;其次,用户可以把公开钥匙发表或刊登出来,使得陌生人之间可以互发保密的通信;最后,公开密钥密码系统提供了数字签字的公开鉴定系统,而这是对称密码系统不具备的。

1.3 典型算法

对称密码系统的算法有DES,AES,RC系列,DEA等,公开密钥密码系统的算法有RSA,Diffie-Hellman, Merkle-Hellman等。

2 DES算法

DES (Data Encryption Standard,数据加密标准)是一个分组加密算法,它以64 bit位(8 byte)为分组对数据加密,其中有8 bit奇偶校验,有效密钥长度为56 bit。64 位一组的明文从算法的一端输入,64 位的密文从另一端输出。DES算法的加密和解密用的是同一算法,它的安全性依赖于所用的密钥。DES 对64位的明文分组进行操作,通过一个初始置换,将明文分组成左半部分和右半部分,各32位长。然后进行16轮完全相同的运算,这些运算被称为函数f,在运算过程中数据与密钥结合。经过16轮后,左、右半部分合在一起经过一个末置换(初始置换的逆置换),完成算法。在每一轮中,密钥位移位,然后再从密钥的56位中选出48位。通过一个扩展置换将数据的右半部分扩展成48位,并通过一个异或操作与48位密钥结合,通过8个s盒将这48位替代成新的32位数据,再将其置换一次。这些运算构成了函数f。然后,通过另一个异或运算,函数f输出与左半部分结合,其结果即成为新的右半部分, 原来的右半部分成为新的左半部分。将该操作重复16次,实现DES的16轮运算。

3 RSA算法

RSA算法使用两个密钥,一个公共密钥,一个私有密钥。如用其中一个加密,则可用另一个解密。密钥长度从40到2048 bit可变。加密时把明文分成块,块的大小可变,但不能超过密钥的长度,RSA算法把每一块明文转化为与密钥长度相同的密文块。密钥越长,加密效果越好,但加密解密的开销也大,所以要在安全与性能之间折衷考虑,一般64位是较合适的。RSA算法利用了陷门单向函数的一种可逆模指数运算,描述如下:(1)选择两个大素数p和q;(2)计算乘积n=pq和φ(n)=(p-1)(q-1);(3)选择大于1小于φ(n)的随机整数e,使得

gcd(e,φ(n))=1;(4)计算d使得de=1modφ(n);(5)对每一个密钥k=(n,p,q,d,e),定义加密变换为Ek(x)=xemodn,解密变换为Dk(y)=ydmodn,这里x,y∈Zn;(6)以{e,n}为公开密钥,{p,q,d}为私有密钥。

4 基于DES和RSA的混合密码系统

4.1 概述

混合密码系统充分利用了公钥密码和对称密码算法的优点,克服其缺点,解决了每次传送更新密钥的问题。发送者自动生成对称密钥,用对称密钥按照DES算法加密发送的信息,将生成的密文连同用接受方的公钥按照RSA算法加密后的对称密钥一起传送出去。收信者用其密钥按照RSA算法解密被加密的密钥来得到对称密钥,并用它来按照DES算法解密密文。

4.2 具体实现步骤

(1)发信方选择对称密钥K(一般为64位,目前可以达到192位)

(2)发信方加密消息:对明文按64位分组进行操作,通过一个初始置换,将明文分组成左半部分和右半部分。然后进行16轮完全相同的运算,最后,左、右半部分合在一起经过一个末置换(初始置换的逆置换),完成算法。在每一轮中,密钥位移位,然后再从密钥的56位中选出48位。通过一个扩展置换将数据的右半部分扩展成48位,并通过一个异或操作与48位密钥结合,通过8个S盒将这48位替代成新的32位数据,再将其置换一次。然后通过另一个异或运算,输出结果与左半部分结合,其结果即成为新的右半部分,原来的右半部分成为新的左半部分。如图3所示。

(3)收信方产生两个足够大的强质数p、q,计算n=p×q和z=(p-1)×(q-1),然后再选取一个与z互素的奇数e,从这个e值找出另一个值d,使之满足e×d=1 mod (z)条件。以两组数(n,e) 和 (n,d)分别作为公钥和私钥。收信方将公钥对外公开,从而收信方可以利用收信方的公钥对 (1)中产生的对称密钥的每一位x进行加密变换Ek(x)=xemodn;

(4)发信方将步骤(2)和(3)中得到的消息的密文和对称密钥的密文一起发送给收信方;

(5)收信方用(3)中得到的私钥来对对称密钥的每一位y进行解密变换Dk(y)=ydmodn,从而得到(1)中的K;

(6)收信方用对称密钥K和DES算法的逆步骤来对消息进行解密,具体步骤和(2)中恰好相反,也是有16轮迭代。

(7)既可以由收信方保留对称密钥K来进行下一次数据通信,也可以由收信方产生新的对称密钥,从而使K作废。

4.3 两点说明

4.3.1 用公钥算法加密密钥

在混合密码系统中,公开密钥算法不用来加密消息,而用来加密密钥,这样做有两个理由:第一,公钥算法比对称算法慢,对称算法一般比公钥算法快一千倍。计算机在大约15年后运行公开密钥密码算法的速度才能比得上现在计算机运行对称密码的速度。并且,随着带宽需求的增加,比公开密钥密码处理更快的加密数据要求越来越多。第二,公开密钥密码系统对选择明文攻击是脆弱的。密码分析者只需要加密所有可能的明文,将得到的所有密文与要破解的密文比较,这样,虽然它不可能恢复解密密钥,但它能够确定当前密文所对应的明文。

4.3.2 安全性分析

如果攻击者无论得到多少密文,都没有足够的信息去恢复明文,那么该密码系统就是无条件安全的。在理论上,只有一次一密的系统才能真正实现这一点。而在本文所讨论的混合密码系统中,发信方每次可以自由选择对称密钥来加密消息,然后用公钥算法来加密对称密钥,即用户可以采用一次一密的方式来进行数据通信,达到上述的无条件安全。

5 小结

基于DES和RSA的混合密码系统结合了公钥密码体制易于密钥分配的特点和对称密码体制易于计算、速度快的特点,为信息的安全传输提供了良好的、快捷的途径,使数据传输的密文被破解的几率大大降低,从而对数据传输的安全性形成更有力的保障,并且发信方和收信方对密钥的操作自由度得到了很大的发挥。