Rijndael加密算法的介绍

Rijndael加密算法的介绍
Rijndael加密算法的介绍

Rijndael加密算法的介绍

作者:林祝兴叶义雄杨国鸿

本文针对Rijndael加密算法的数学理论背景,算法的架构,回合的转换,金钥的产生,以及各种攻击破密法等等,做了一些简单的介绍。

一、简介

在AES ( Advanced Encryption Standard ) 的选拔中,从最初的十五个算法,到十个、五个,逐步筛选出适合用来作为下一代加密算法的标准。Rijndael在经过了一番时日的考验之后,也一直名列前矛。直至十月二日,Rijndael才脱颖而出,这篇文章便是针对Rijndael作简要的介绍。

Rijndael是一个反复运算的加密算法,它允许可变动的数据区块及金钥的长度。数据区块与金钥长度的变动是各自独立的。

在Rijndael算法中定义了几个名词,分述如下:

State:在运算过程中所产生的中间值,是一个4×Nb的矩阵,Nb可由数据长度除以32位求得,也就是把数据分割成Nb个区块。

Cipher Key:用来做加密运算的金钥,形式是一个4×Nk的矩阵,Nk可由金钥长度除以32位求得,也就是把金钥分割成Nk个32位的子金钥。

在Rijndael算法中,运算的回合数(Nr)是由Nb及Nk所决定的,回合数的变动定义如下表。

Nr Nb=4 Nb=6 Nb=8

Nk=4 10 12 14

Nk=6 12 12 14

Nk=8 14 14 14

二、Rijndael的数学背景

在Rijndael中使用了许多字节层级的运算,而这些运算是以GF(28)为基础架构。也有一些采用了4-byte的字组运算。在这部分,我们将介绍这些基本的数学原理。

(1) GF(28)的定义

假设一个字节b由b7b6b5b4b3b2b1b0组成,我们可以把这些b i想象成一个7次多项式的系数,而这些系数不是0就是1:

b7x7+ b6x6+ b5x5+ b4x4+ b3x3+ b2x2+ b1x + b0,

例如,(57)16的二进制表示法为(0101,0111)2表示成多项式,则为:

x6+ x4+ x2+ x + 1 .

(2) 加法

两个多项式的加法,则是定义为相同指数项的系数和再模余2,简单的说就是作EXOR运算(i.

e., 1+1=0)。例如:

(57)16+(83)16=(01010111)2+(10000011)2 = (11010100)2 = (D4)16

或是(x6+x4+x2+x+1) + (x7+x+1) = x7+x6+x4+x2

(3) 乘法

在乘法里面,多项式相乘之后的结果很容易造成溢位的问题,解决溢位的方式是把相乘的结果,再模余一个不可分解的多项式m(x)。在Rijndael中,定义一个这样子的多项式为

m(x)=x8+x4+x3+x+1或是(11B)16

例如:

(57)16?(83)16= ( x6+ x4+ x2+ x + 1)?( x7+ x + 1) = x13+ x11+ x9+ x8+ x7+ x7+ x5+ x3+ x2+x+x6+ x4+ x2+ x + 1

= (x13+ x11+ x9+ x8+ x6+ x5+ x4+ x3+ 1+x13+ x11+ x9+ x8+ x6+ x5+ x4+ x3 + 1) modulo (x8+ x4+ x3+ x + 1)

= x7+ x6+ 1=(C1)16

(4) 乘以x

若把b(x)乘上x,得到b7x8+ b6x7+ b5x6+ b4x5+ b3x4+ b2x3+ b1x2+ b0x。若b7=0,不会发生溢位问题,答案即是正确的;若b7=1,发生溢位问题,必须减去m(x)。我们可以把这种运算表示为xtime(x),其运算方式为left shift(若溢位则和(1B)16做EXOR运算),例如:‘57’ · ‘13’ = ‘FE’

‘57’ · ‘02’ = xtime(57) = ‘AE’

‘57’ · ‘04’ = xtime(AE) = ‘47’

‘57’ · ‘08’ =xtime(47) = ‘8E’

‘57’ · ‘10’ = xtime(8E) = ‘07’

‘57’ · ‘13’ = ‘57’ · (‘01’⊕‘02’⊕‘10’) = ‘57’ ⊕‘AE’ ⊕‘07’ = ‘FE’

三、Rijndael的加密架构

Rijndael加密算法是由一个initial Round Key addition,Nr-1个回合运算,及一个final r ound所组成。加密过程以C语言伪码叙述如下:

Rijndael(State, CipherKey)

//state表示输入的数据明文,

//CipherKey表示使用的加密金钥,

//ExpandedKey表示每个Round使用的子金钥。

{

KeyExpansion(CipherKey, ExpandedKey);

AddRoundKey(State, ExpandedKey);

For ( i=1; i

Round(State, ExpandedKey+Nb×i);

FinalRound(State, ExpandedKey+Nb×Nr);

}

上述算法中的Key Expansion,可以先行计算出来,所以加密过程可以简化为:

Rijndael(State,ExpandedKey)

//State表示输入的数据明文,

//ExpandedKey表示每个Round使用的子金钥。

{

AddRoundKey(State,ExpandedKey);

For( i=1 ; i

{

Round(State,ExpandedKey + Nb×i) ;

}

FinalRound (State, ExpandedKey + Nb×Nr); }

各个子运算介绍如下。

回合转换(Round transformation):

回合转换包含四个不同的工作,其算法如下:Round(State,RoundKey)

//State表示输入的数据明文,

//RoundKey表示每个Round使用的子金钥。

{

ByteSub(State);

ShiftRow(State);

MixColumn(State);

AddRoundKey(State,RoundKey);

}

算法中的终止回合(Final round)包含下列工作项目:FinalRound(State,RoundKey)

//State表示输入的数据明文,

//RoundKey表示每个Round使用的子金钥。

{

ByteSub(State) ;

ShiftRow(State) ;

AddRoundKey(State,RoundKey);

}

以下针对每个回合转换的运算过程,作一个深入的介绍,可以更清楚算法的过程。

1. 字节取代转换(ByteSub transformation):

字节转换是一个以字节为单位的非线性取代运算,取代表(S-Box)是经过两个运算过程而建立,并且是可逆的。

首先找出每个字节在GF(28)中的乘法反元素;

接着经过一个仿射(Affine)转换运算,定义如下:

(本图摘录自参考文献[1])

字节取代(ByteSub)运算对State的影响,如下图所示:

(本图摘录自参考文献[1])

字节取代(ByteSub)转换的反运算:

计算仿射对应之后的相反运算可得到S-1-Box,以此S-1-Box做字节取代(ByteSub)即可。2. 移列转换( ShiftRow transformation ):

在这个转换中,State的每一列以不同的偏移量做环状位移,第0列不动,第一列位移C1个字节,第二列位移C2个字节,第三列位移C3个字节。位移的偏移量C1,C2,C3跟区块的数目(N b)有关,定义如下表:

移列转换(ShiftRow)运算对于State的影响,图示如下:

(本图摘录自参考文献[1])

移列转换(ShiftRow)的反运算:

对第二第三及第四列做Nb-C1,Nb-C2,Nb-C3个字节的环状位移即可。

3. 混行转换(MixColumn transformation):

在这个转换中,把State当作一个存在GF(28)中的多项式。并且对一个固定的多项式c(x)作乘法,如果发生溢位,则再模余x4+1。表示如下:

c(x) = ‘03’ x3+ ‘01’ x2+ ‘01’ x + ‘02’ .

c(x)与x4+1互质,令b(x) = c(x) ?a(x),以矩阵乘法表示如下:

(本图摘录自参考文献[1])

State经过混行(MixColumn)运算之后的变化如下:

(本图摘录自参考文献[1])

混行(MixColumn)转换的反运算,则是乘上一个特殊的多项式d(x),

(‘03’x3+ ‘01’x2+ ‘01’x + ‘02’ ) ? d(x) = ‘01’,

d(x) = ‘0B’x3+ ‘0D’x2+ ‘09’x + ‘0E’ .

4. The Round Key Addition:

这个运算主要是把每一个回合金钥(Round Key)透过简单的bitwise EXOR加入到每一个Sta te中,以图示如下:

(本图摘录自参考文献[1])

四、金钥的排程(Key Schedule)

回合金钥(Round Key)是从加密金钥(Cipher Key)经过运算产生出来的。金钥排程(Key Sch edule)是由金钥扩充(Key Expansion)及回合金钥的选择(Round Key Selection)组成的,基本的理论如下:

所有回合金钥的总位数是把区块长度(block length)乘上回合数加1,(有Nr-1个回合,加上一个终止回合(final round)),例如,128个位的区块长度经过10个回合运算,所需要用到的所有回合金钥的总位数为1408个位。

加密金钥(Cipher Key)必须扩充为扩充金钥(Expanded Key)。

回合金钥是从扩充金钥中选出来的,选择的方式如下:

第一个回合金钥由前Nb个字组组成,第二个回合金钥由接下来的Nb个字组组成,余此类推。

(1) 金钥的扩充( Key Expansion ):

扩充后的金钥是一个4-byte的线性数组,表示为W[Nb×(Nr+1)]。前Nk个字组包含了加密金钥(Cipher Key)。

金钥扩充函式和Nk是息息相关的,分为两种情况运作,一是当Nk小于或等于6,另外则是当Nk大于6,以伪码叙述如下:

当Nk≦6时,

KeyExpansion(byte Key[4×Nk] word W[Nb×(Nr+1)])

{

for(i = 0; i < Nk; i++)

W[i] = (Key[4×i], Key[4×i+1], Key[4×i+2], Key[4×i+3] );

for(i = Nk; i < Nb×(Nr + 1); i++)

{

temp = W[i - 1];

if (i % Nk == 0)

temp = SubByte(RotByte(temp)) ^ Rcon[i / Nk];

W[i] = W[i - Nk] ^ temp;

}

}

在上面的子程序中,SubByte(W)传回一个4-byte的字组,这些字组是输入的字组经过S-bo x的转换所产生的相对字组。RotByte(W)则是传回经过旋转的字组。

当Nk>6时,

KeyExpansion(byte Key[4×Nk] word W[Nb×(Nr+1)])

{

for(i = 0; i < Nk; i++)

W[i] = (key[4×i],key[4×i+1], key[4×i+2], key[4×i+3] );

for(i = Nk; i < Nb×(Nr + 1); i++)

{

temp = W[i - 1];

if (i % Nk == 0)

temp = SubByte(RotByte(temp)) ^ Rcon[i / Nk];

else if (i % Nk == 4)

temp = SubByte(temp);

W[i] = W[i - Nk] ^ temp;

}

}

以上两种情况的相异处在于当Nk≦6时,(i-4)是Nk的倍数时,对于W[i-1]先执行SubByte,再执行EXOR。

上述回合常数定义如下:

Rcon[i] = (RC[i],‘00’,‘00’,‘00’),其中RC[0]=’01’,RC[i]=xtime(Rcon[i-1])。

(2) 选择回合金钥(Round Key Selection)

第i个回合金钥是指在存在回合金钥缓冲区的字组W[Nb*i]到W[Nb*(i+1)],图示如下:(本图摘录自参考文献[1])

五、安全性分析

我们针对以下已知的攻击法对Rijndael的安全性分析作一简要叙述,包括差分攻击法(Di fferential Cryptanalysis),线性攻击法(Linear Cryptanalysis),平方攻击法(The Squar

e Attack),内插攻击法(Interpolation attacks)等攻击方式。

(1) 差分攻击法( Differential Cryptanalysis )

此攻击法是一种Chosen-plaintext attack,利用大量已知的明文/密文对之间的差异,据以推测出金钥的位值。在大部分的回合运算中(回合数超过3),若存在超过21-n(n指的是区块长度)比例的可预测性的差异,这个攻击法就可以推测出金钥的位值。在Rijndael中,已经证明在经过Rijndael四个回合的运算后,存在不超过2-150比例的可预测性差异,在八个回合运算中不超过2-300。详细证明过程,请参照参考文献。

(2) 线性攻击法( Linear Cryptanalysis )

这是一种Known-plaintext攻击法,利用大量搜集到的明文/密文对的相关性,对加密法进行攻击。明文/密文对的相关性由线性轨迹(Linear trails)所组成,由于线性轨迹的相关系数与Round keys的值有密切关系,透过相关系数的正负号,线性攻击法就可以找出金钥值。要对抗这种攻击法,有一个必要条件就是使这种相关系数大于2n/2的线性轨迹不存在。在Rijnda el中,已经证明出当执行四个回合时,不存在相关系数大于2-75的线性轨迹;在执行八个回合时,其相关系数大于2-150的相关系数亦不存在。详细证明过程请参照参考文献。

(3) 平方攻击法( The Square attack )

这种攻击法是一种chosen- plaintext attack,而且和字节取代(ByteSub),混行(Mix Column)时的多项式乘法,金钥的排程(Key Schedule)等运算无关。当Rijndael执行6个回合以上时,此种方式比完全的金钥搜寻(exhaustive key search)来的更有效率。关于此种攻击方式的详尽描述及Rijndael如何延伸此种攻击方式,请参照参考文献。

(4) 内插攻击法( Interpolation attacks )

在这种攻击法中,攻击者利用加密的输入及输出配对,建立一些多项式。如果加密的组件有一个简洁的代数展开式,并且和管理的复杂度结合在一起时,这种攻击法便是可行的。基本的攻击方式是如果攻击者建立的代数展开式的阶度(degree)很小,只需要一些加密法的输入及输出配对就可以得到代数展开式的各项系数。然而,在GF(28)中的取代矩阵(S-box),它的展开式为:63+8fx127+b5x191+01x223+f4x239+25x247+f9x251+09x253+05x254。其余介绍,请参照参考文献。

(5)、弱金钥(Weak keys)

关于弱金钥的发生,基本上是因为加密法的非线性运算与实际金钥值有密切关系。而这种问题不存在于Rijndael之中,因为在Rijndael中,金钥是以EXOR运算,而所有的非线性运算都定义在取代矩阵(S-box)中。在Rijndael中,对金钥的选择,是没有限制的。

六、结论:

以上对Rijndael作一简要介绍之后,我们以Rijndael的优点与限制作为我们的结论。(1)、Rijndael有以下优点—

以实作观点而言

1. Rijndael可以实作在Pentium ( Pro ) 等计算机上,并已相当快的速度处理运算;而在表格大小与效率之间是可以做取舍的。

2. Rijndael可以实作在智能卡(Smart Card)上,使用少量的RAM,少量的程序代码;在ROM与效率之间也是可以做取舍的。

3. 在设计上,回合的转换是可平行处理的。

4. 加密法不采用算术运算,不会因为不同处理器架构而有所偏差。

设计简单化:

1. 设计上不引用其它加密组件,如S-box。

2. 安全度不建立在一些分析不够明确的算术运算之上。

3. 加密法紧凑,不易藏入暗门等程序代码。

除此之外,Rijndael更允许可变动的区块长度及金钥长度,其长度可由128位到256位之间;所以回合数也是可变动的。

(2)Rijndael的限制:

在解密过程中有以下限制

1. 实作在智慧卡时,解密不如加密来的有效率,解密需要更多的程序代码及cycles,但是跟其它算法比起来,仍然是快速的。

2. 以软件而言,加密和解密使用不同的程序和表格。

3. 以硬件而言,解密只能重用部分加密的电路

ECC加密算法入门介绍

标题:ECC加密算法入门介绍 发信人:zmworm 时间:2003/05/04 08:32pm 详细信息: ECC加密算法入门介绍 作者:ZMWorm[CCG] E-Mail:zmworm@https://www.360docs.net/doc/627398573.html, 主页:https://www.360docs.net/doc/627398573.html,/ 前言 同RSA(Ron Rivest,Adi Shamir,Len Adleman三位天才的名字)一样,ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)也属于公开密钥算法。目前,国内详细介绍ECC的公开文献并不多(反正我没有找到)。有一些简介,也是泛泛而谈,看完后依然理解不了ECC的实质(可能我理解力太差)。前些天我从国外网站找到些材料,看完后对ECC似乎懵懂了。于是我想把我对ECC的认识整理一下,与大家分享。当然ECC博大精深,我的认识还很肤浅,文章中错误一定不少,欢迎各路高手批评指正,小弟我洗耳恭听,并及时改正。文章将采用连载的方式,我写好一点就贴出来一点。本文主要侧重理论,代码实现暂不涉及。这就要求你要有一点数学功底。最好你能理解RSA算法,对公开密钥算法有一个了解。《近世代数基础》《初等数论》之类的书,最好您先翻一下,这对您理解本文是有帮助的。别怕,我尽量会把语言通俗些,希望本文能成为学习ECC的敲门砖。 一、从平行线谈起。 平行线,永不相交。没有人怀疑把:)不过到了近代这个结论遭到了质疑。平行线会不会在很远很远的地方相交了?事实上没有人见到过。所以“平行线,永不相交”只是假设(大家想想初中学习的平行公理,是没有证明的)。既然可以假设平行线永不相交,也可以假设平行线在很远很远的地方相交了。即平行线相交于无穷远点P∞(请大家闭上眼睛,想象一下那个无穷远点P∞,P∞是不是很虚幻,其实与其说数学锻炼人的抽象能力,还不如说是锻炼人的想象力)。给个图帮助理解一下: 直线上出现P∞点,所带来的好处是所有的直线都相交了,且只有一个交点。这就把直线的平行与相交统一了。为与无穷远点相区别把原来平面上的点叫做平常点。 以下是无穷远点的几个性质。

常见公钥加密算法有哪些

常见公钥加密算法有哪些 什么是公钥加密公钥加密,也叫非对称(密钥)加密(public key encrypTIon),属于通信科技下的网络安全二级学科,指的是由对应的一对唯一性密钥(即公开密钥和私有密钥)组成的加密方法。它解决了密钥的发布和管理问题,是目前商业密码的核心。在公钥加密体制中,没有公开的是私钥,公开的是公钥。 常见算法RSA、ElGamal、背包算法、Rabin(Rabin的加密法可以说是RSA方法的特例)、Diffie-Hellman (D-H)密钥交换协议中的公钥加密算法、EllipTIc Curve Cryptography (ECC,椭圆曲线加密算法)。使用最广泛的是RSA算法(由发明者Rivest、Shmir和Adleman 姓氏首字母缩写而来)是著名的公开金钥加密算法,ElGamal是另一种常用的非对称加密算法。 非对称是指一对加密密钥与解密密钥,这两个密钥是数学相关,用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥。 如果加密密钥是公开的,这用于客户给私钥所有者上传加密的数据,这被称作为公开密钥加密(狭义)。例如,网络银行的客户发给银行网站的账户操作的加密数据。 如果解密密钥是公开的,用私钥加密的信息,可以用公钥对其解密,用于客户验证持有私钥一方发布的数据或文件是完整准确的,接收者由此可知这条信息确实来自于拥有私钥的某人,这被称作数字签名,公钥的形式就是数字证书。例如,从网上下载的安装程序,一般都带有程序制作者的数字签名,可以证明该程序的确是该作者(公司)发布的而不是第三方伪造的且未被篡改过(身份认证/验证)。 对称密钥密码体制 所谓对称密钥密码体制,即加密密钥与解密密钥是相同的密码体制。 数据加密标准DES属于对称密钥密码体制。它是由IBM公司研制出,于1977年被美国

网络安全常见的四种加密解密算法

package mima; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class Mainer { StringBuffer MStr = new StringBuffer(""); // 加密字符串 StringBuffer CStr = new StringBuffer(""); // 解密字符串 public static void main(String[] args) { System.out.print("请输入密钥:"); Scanner s = new Scanner(System.in); int key = s.nextInt() % 26; // %26的意义是获取密钥的偏移值 Mainer ks = new Mainer(); ks.E(key); // 加密 ks.D(key); // 解密 } /** * 加密公式 */ void E(int k) { try { System.out.println("请输入一段明文:"); char b[]; BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in)); String str2 = br2.readLine(); b = str2.toCharArray(); char ch = ' '; for (int i = 0; i < str2.length(); i++) { if (b[i] >= 'a' && b[i] <= 'z') { ch = (char) ((b[i] - 'a' + k) % 26 + 'a'); } if(b[i] >= 'A' && b[i] <= 'Z'){ ch = (char) ((b[i] - 'A' + k) % 26 + 'A'); } if(b[i]>='0'&&b[i]<='9')

国密算法(国家商用密码算法简介)

国家商用密码算法简介 密码学是研究编制密码和破译密码的技术科学,起源于隐秘消息传输,在编码和破译中逐渐发展起来。密码学是一个综合性的技术科学,与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。密码学的基本思想是对敏感消息的保护,主要包括机密性,鉴别,消息完整性和不可否认性,从而涉及加密,杂凑函数,数字签名,消息认证码等。 一.密码学简介 密码学中应用最为广泛的的三类算法包括对称算法、非对称算法、杂凑算法。 1.1 对称密码 对称密码学主要是分组密码和流密码及其应用。分组密码中将明文消息进行分块加密输出密文区块,而流密码中使用密钥生成密钥流对明文消息进行加密。世界上应用较为广泛的包括DES、3DES、AES,此外还有Serpent,Twofish,MARS和RC6等算法。对称加密的工作模式包括电码本模式(ECB 模式),密码反馈模式(CFB 模式),密码分组链接模式(CBC 模式),输入反馈模式(OFB 模式)等。1.2 非对称密码 公钥密码体制由Diffie和Hellman所提出。1978年Rivest,Shamir和Adleman提出RAS密码体制,基于大素数分解问题。基于有限域上的离散对数问题产生了ElGamal密码体制,而基于椭圆曲线上的离散对数问题产生了椭圆曲线密码密码体制。此外出现了其他公钥密码体制,这些密码体制同样基于困难问题。目前应用较多的包括RSA、DSA、DH、ECC等。 1.3杂凑算法 杂凑算法又称hash函数,就是把任意长的输入消息串变化成固定长的输出串的一种函数。这个输出串称为该消息的杂凑值。一个安全的杂凑函数应该至少满足以下几个条件。 1)输入长度是任意的; 2)输出长度是固定的,根据目前的计算技术应至少取128bits长,以便抵抗生日攻击; 3)对每一个给定的输入,计算输出即杂凑值是很容易的; 4)给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定 杂凑函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得它们杂凑到同一个值是计算上不可行的。 杂凑函数主要用于完整性校验和提高数字签名的有效性,目前已有很多方案。这些算法都是伪随机函数,任何杂凑值都是等可能的。输出并不以可辨别的方式依赖于输入;在任何输入串中单个比特

关于密码学的发展和一些常见的加密算法

关于密码学的发展和一些常见的加密算法 1.悠久迷人的密码史话——密码学和密码 前言: 密码学(Cryptology,来源于希腊语kryptos和graphein,即隐藏和书写的意思)这门科学,或者说这门艺术,通常被分为两个部分,密码学(Cryptography)的任务是构建更为隐秘而且有效的密码,或者说加密方式;而与之相对应,密码分析学(Crypanalysis)则是研究已有的加密法的弱点,在没有密钥的情况下将密文还原成为明文。这两种科学相互依靠而不能分割,密码学家(Cryptologist)需要研习密码学来掌握加密方式,以便更好地解密;同样需要了解密码分析学,以判定自己密码的安全性高低。有一句话说的很好:“密码是两个天才的较量,败者将耗尽智慧而死。” 密码学产生的根本原因在于人们想要传递一些只有我们允许的接受者才能接受并理解的信息。被隐藏的真实信息称为明文(Plaintext),明文通过加密法(Cipher)变为密文(Ciphertext),这个过程被称为加密(Encryption),通过一个密钥(Key)控制。密文在阅读时需要解密(Decryption),同样需要密钥,这个过程由密码员(Cryptographer)完成。但是密码的传递并非绝对安全,可能有未得到允许的人员得到密文,并且凭借他们的耐心和智慧(我们通常假定他们有足够的时间和智慧),在没有密钥的情况下得到明文,这种方法称为破解(Break)。通常使用的加密方法有编码法(Code)和加密法(Cipher),编码法是指用字,短语和数字来替代明文,生成的密文称为码文(Codetext),编码法不需要密钥或是算法,但是需要一个编码簿(Codebook),编码簿内是所有明文与密文的对照表;而加密法则是使用算法和密钥。另外一种较常用的方法是夹带加密法(Steganography),顾名思义,它是将密文以隐藏的方式传递的,比如图画或是其它消息中,或是使用隐形墨水,在计算机能够进行图象和其它信息的处理之后,这种方法更是有了极大的发展空间。 密码的历史十分悠久。大约在4000年以前,在古埃及的尼罗河畔,一位擅长书写者在贵族的基碑上书写铭文时有意用加以变形的象形文字而不是普通的象形文字来写铭文,从而揭开了有文字记载的密码史。 公元前5世纪,古斯巴达人使用了一种叫做“天书”的器械,这是人类历史上最早使用的密码器械。“天书”是一根用草纸条、皮条或羊皮纸条紧紧缠绕的木棍。密信自上而下写在羊皮纸条上。然后把羊皮纸条解开送出。这些不连接的文字毫无意义,除非把羊皮纸条重新缠在一根直径和原木棍相同的木棍上,这样字就一圈圈跳出来,形成那封信。 公元前4世纪前后,希腊著名作家艾奈阿斯在其著作《城市防卫论》中就曾提到一种被称为“艾奈阿斯绳结”的密码。它的作法是从绳子的一端开始,每隔一段距离打一个绳结,而绳结之间距离不等,不同的距离表达不同的字母。按此规定把绳子上所有绳结的距离按顺序记录下来,并换成字母,就可理解它所传递的信息。 古罗马时代曾使用过一种“代替式密码”,把信中每个文字的字母都用字母顺序表中相隔两位后的一个字母取代,这种代替式密码直到第二次大战时还被日本海军使用。 此外,在古代还出现过一种被称为“叠痕法”的密码,使用时先把信纸折叠几下(上下及左右),然后铺平信纸,将传递的信息按顺序一个个分开,写在折

摩斯密码以及十种常用加密方法

摩斯密码以及十种常用加密方法 ——阿尔萨斯大官人整理,来源互联网摩斯密码的历史我就不再讲了,各位可以自行百度,下面从最简单的开始:时间控制和表示方法 有两种“符号”用来表示字元:划(—)和点(·),或分别叫嗒(Dah)和滴(Dit)或长和短。 用摩斯密码表示字母,这个也算作是一层密码的: 用摩斯密码表示数字:

用摩斯密码表示标点符号: 目前最常用的就是这些摩斯密码表示,其余的可以暂时忽略 最容易讲的栅栏密码: 手机键盘加密方式,是每个数字键上有3-4个字母,用两位数字来表示字母,例如:ru用手机键盘表示就是:7382, 那么这里就可以知道了,手机键盘加密方式不可能用1开头,第二位数字不可能超过4,解密的时候参考此

关于手机键盘加密还有另一种方式,就是拼音的方式,具体参照手机键盘来打,例如:“数字”表示出来就是:748 94。在手机键盘上面按下这几个数,就会出现:“数字”的拼音 手机键盘加密补充说明:利用重复的数字代表字母也是可以的,例如a可以用21代表,也可以用2代表,如果是数字9键上面的第四个字母Z也可以用9999来代表,就是94,这里也说明,重复的数字最小为1位,最大为4位。 电脑键盘棋盘加密,利用了电脑的棋盘方阵,但是个人不喜这种加密方式,因需要一个一个对照加密

当铺密码比较简单,用来表示只是数字的密码,利用汉字来表示数字: 电脑键盘坐标加密,如图,只是利用键盘上面的字母行和数字行来加密,下面有注释: 例:bye用电脑键盘XY表示就是: 351613

电脑键盘中也可参照手机键盘的补充加密法:Q用1代替,X可以用222来代替,详情见6楼手机键盘补充加密法。 ADFGX加密法,这种加密法事实上也是坐标加密法,只是是用字母来表示的坐标: 例如:bye用此加密法表示就是:aa xx xf 值得注意的是:其中I与J是同一坐标都是gd,类似于下面一层楼的方法:

几种常用的数据加密技术

《Network Security Technology》Experiment Guide Encryption Algorithm Lecture Code: 011184 Experiment Title:加密算法 KeyWords:MD5, PGP, RSA Lecturer:Dong Wang Time:Week 04 Location:Training Building 401 Teaching Audience:09Net1&2 October 10, 2011

实验目的: 1,通过对MD5加密和破解工具的使用,掌握MD5算法的作用并了解其安全性; 2,通过对PGP加密系统的使用,掌握PGP加密算法的作用并了解其安全性; 3,对比MD5和PGP两种加密算法,了解它们的优缺点,并总结对比方法。 实验环境: 2k3一台,XP一台,确保相互ping通; 实验工具:MD5V erify, MD5Crack, RSA-Tools,PGP8.1 MD5加密算法介绍 当前广泛存在有两种加密方式,单向加密和双向加密。双向加密是加密算法中最常用的,它将明文数据加密为密文数据,可以使用一定的算法将密文解密为明文。双向加密适合于隐秘通讯,比如,我们在网上购物的时候,需要向网站提交信用卡密码,我们当然不希望我们的数据直接在网上明文传送,因为这样很可能被别的用户“偷听”,我们希望我们的信用卡密码是通过加密以后,再在网络传送,这样,网站接受到我们的数据以后,通过解密算法就可以得到准确的信用卡账号。 单向加密刚好相反,只能对数据进行加密,也就是说,没有办法对加密以后的数据进行解密。这有什么用处?在实际中的一个应用就是数据库中的用户信息加密,当用户创建一个新的账号或者密码,他的信息不是直接保存到数据库,而是经过一次加密以后再保存,这样,即使这些信息被泄露,也不能立即理解这些信息的真正含义。 MD5就是采用单向加密的加密算法,对于MD5而言,有两个特性是很重要的,第一是任意两段明文数据,加密以后的密文不能是相同的;第二是任意一段明文数据,经过加密以后,其结果必须永远是不变的。前者的意思是不可能有任意两段明文加密以后得到相同的密文,后者的意思是如果我们加密特定的数据,得到的密文一定是相同的。不可恢复性是MD5算法的最大特点。 实验步骤- MD5加密与破解: 1,运行MD5Verify.exe,输入加密内容‘姓名(英字)’,生成MD5密文;

转 常用加密算法介绍

转常用加密算法介绍 5.3.1古典密码算法 古典密码大都比较简单,这些加密方法是根据字母的统计特性和语言学知识加密的,在可用计算机进行密码分析的今天,很容易被破译。虽然现在很少采用,但研究这些密码算法的原理,对于理解、构造和分析现代密码是十分有益的。表5-1给出了英文字母在书报中出现的频率统计。 表5-1英文字母在书报中出现的频率 字母 A B C D E F G H I J K L M 频率 13.05 9.02 8.21 7.81 7.28 6.77 6.64 6.64 5.58 4.11 3.60 2.93 2.88 字母 N O P Q

R S T U V W X Y Z 频率 2.77 2.62 2.15 1.51 1.49 1.39 1.28 1.00 0.42 0.30 0.23 0.14 0.09 古典密码算法主要有代码加密、替换加密、变位加密、一次性密码簿加密 等几种算法。 1.代码加密 代码加密是一种比较简单的加密方法,它使用通信双方预先设定的一组有 确切含义的如日常词汇、专有名词、特殊用语等的代码来发送消息,一般只能 用于传送一组预先约定的消息。 密文:飞机已烧熟。 明文:房子已经过安全检查。 代码加密的优点是简单好用,但多次使用后容易丧失安全性。 2.替换加密 将明文字母表M中的每个字母替换成密文字母表C中的字母。这一类密码 包括移位密码、替换密码、仿射密码、乘数密码、多项式代替密码、密钥短语 密码等。这种方法可以用来传送任何信息,但安全性不及代码加密。因为每一 种语言都有其特定的统计规律,如英文字母中各字母出现的频度相对基本固定,根据这些规律可以很容易地对替换加密进行破解。以下是几种常用的替换加密 算法。

关于数据加密的重要性及各种方法的区别

关于数据加密的重要性及各种方法的区别 文件加密的重要性: 有些同学以为,自己既不是影视明星,又不是恐怖分子,不需要采用文件加密之类的工具,那就大错特错啦。俺大致介绍一下,文件加密的用武之地。 1、防范失窃 这年头,笔记本电脑、平板电脑越来越流行,而这类便捷的移动设备,也增加了丢失的概率。一旦你的移动设备丢失,存储在上面的个人敏感信息就有暴露的风险。比如用浏览器保存的登录口令、邮件客户端存储的私人邮件、等等。如果你的敏感信息是加密的,失窃后的风险就大大降低。 2、保存个人隐私 很多人的家用电脑,都是几个家庭成员共用的。你可能会有一些个人隐私的信息,不希望被其他家庭成员看到。比如你上网下载的毛片、艳照、等,多半不希望被你父母或子女看到。这时候,文件加密就可以防止你的隐私外泄。 3、加密备份数据 很多同学把电脑中的数据备份到移动硬盘上。有些同学觉得放家里的移动硬盘还不保险。正好近2年,"云"的概念炒得很热。所以,那些忧患意识很强的同学,就开始考虑用"云存储"(俗称网盘)来做异地备份。 一旦你把数据备份到"云端",就得考虑加密问题了。假如你用的是国内公司提供的网盘,那你一定得小心。如果你把数据备份到国外的网盘,也未必安全。这不,连大名鼎鼎的Dropbox,最近都曝出数据安全的丑闻。 加密的方法:、 使用压缩软件 发现很多人(尤其是菜鸟用户),首先想到的加密方式,就是把敏感文件用压缩工具(比如WinRAR,7zip、等)压缩一下,并设置一个口令。 优点: 1)、不需要额外安装软件 压缩软件几乎是装机必备的软件。因此,使用这种方法,多半不需要额外安装其它软件。 2)、便于备份 可以把压缩文件copy到任何地方,只要知道口令就能打开。 缺点: 1)、加密强度没保证 压缩软件的强项是压缩,而不是加密。有些压缩软件,本身的加密强度不够,还有些压

常用加密算法概述

常用加密算法概述 常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。 对称加密 指加密和解密使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。 常见的对称加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES 非对称加密 指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用户,企业需要生成n对密钥,并分发n个公钥。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得十分简单。同时,由于每个用户的私钥是唯一的,其他用户除了可以可以通过信息发送者的公钥来验证信息的来源是否真实,还可以确保发送者无法否认曾发送过该信息。非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比非对称加密慢上1000倍。 常见的非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用) Hash算法 Hash算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。 常见的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1 加密算法的效能通常可以按照算法本身的复杂程度、密钥长度(密钥越长越安全)、加解密速度等来衡量。上述的算法中,除了DES密钥长度不够、MD2速度较慢已逐渐被淘汰外,其他算法仍在目前的加密系统产品中使用。 加密算法的选择 前面的章节已经介绍了对称解密算法和非对称加密算法,有很多人疑惑:那我们在实际使用的过程中究竟该使用哪一种比较好呢?

常见的几种加密算法

1、常见的几种加密算法: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合; 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高; RC2和RC4:用变长密钥对大量数据进行加密,比DES 快;IDEA(International Data Encryption Algorithm)国际数据加密算法,使用128 位密钥提供非常强的安全性; RSA:由RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的; DSA(Digital Signature Algorithm):数字签名算法,是一种标准的DSS(数字签名标准); AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前AES 标准的一个实现是Rijndael 算法; BLOWFISH,它使用变长的密钥,长度可达448位,运行速度很快; 其它算法,如ElGamal钥、Deffie-Hellman、新型椭圆曲线算法ECC等。 2、公钥和私钥: 私钥加密又称为对称加密,因为同一密钥既用于加密又用于解密。私钥加密算法非常快(与公钥算法相比),特别适用于对较大的数据流执行加密转换。 公钥加密使用一个必须对未经授权的用户保密的私钥和一个可以对任何人公开的公钥。用公钥加密的数据只能用私钥解密,而用私钥签名的数据只能用公钥验证。公钥可以被任何人使用;该密钥用于加密要发送到私钥持有者的数据。两个密钥对于通信会话都是唯一的。公钥加密算法也称为不对称算法,原因是需要用一个密钥加密数据而需要用另一个密钥来解密数据。

加密算法介绍及加密算法地选择

加密算法介绍及如何选择加密算法 加密算法介绍 一. 密码学简介 据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密 专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。 随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于; 在1997年,美国国家标准局公布实施了“美国数据加密标准(DES)”,民间力量开始全 面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度 需求的不断提高,近期又出现了AES、ECC等。 使用密码学可以达到以下目的: 保密性:防止用户的标识或数据被读取。 数据完整性:防止数据被更改。 身份验证:确保数据发自特定的一方。 二. 加密算法介绍 根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非 对称加密算法(公开密钥加密)。

对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。 非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。 对称加密算法 对称加密算法用来对敏感数据等信息进行加密,常用的算法包括: DES( Data Encryption Standard ):数据加密标准,速度较快,适用于加密大量数据的场合。 3DES ( Triple DES ) :是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 A E S( Advanced Encryption Standard ):高级加密标准,是下一代的加密算法标 准,速度快,安全级别高; AES 2000 年10 月,NIST (美国国家标准和技术协会)宣布通过从15 种侯选算法中选 出的一项新的密匙加密标准。Rijndael 被选中成为将来的AES。Rijndael 是在1999 年下半年,由研究员Joan Daemen 和Vincent Rijmen 创建的。AES 正日益成为加密各种形式的电子数据的实际标准。 美国标准与技术研究院(NIST) 于2002 年 5 月26 日制定了新的高级加密标准(AES) 规范。 算法原理 AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。

加密算法

用C语言实现凯撒加密算法 一、凯撒加密算法的来源与简介 “凯撒密码”据传是古罗马凯撒大帝用来保护重要军情的加密系统。它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B 换作字母E。据说凯撒是率先使用加密函的古代将领之一,因此这种加密方法被称为凯撒密码。 假如有这样一条指令: RETURN TO ROME 用凯撒密码加密后就成为: UHWXUA WR URPH 如果这份指令被敌方截获,也将不会泄密,因为字面上看不出任何意义。 这种加密方法还可以依据移位的不同产生新的变化,如将每个字母左19位,就 产生这样一个明密对照表: 明:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 密:T U V W X Y Z A B C D E F G H I J K L M N O P Q R S 在这个加密表下,明文与密文的对照关系就变成: 明文:THE FAULT, DEAR BRUTUS, LIES NOT IN OUR STARS BU T IN OURSELVES. 密文:MAX YTNEM, WXTK UKNMNL, EBXL GHM BG HNK LMTKL UNM BG HNKLXEOXL. 很明显,这种密码的密度是很低的,只需简单地统计字频就可以破译。于是人们在单一凯撒密码的基础上扩展出多表密码,称为“维吉尼亚”密码。它是由16世纪 法国亨利三世王朝的布莱瑟·维吉尼亚发明的,其特点是将26个凯撒密表合成一个,见下表: 原: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A :A B C D E F G H I J K L M N O P Q R S T U V W X Y Z B :B C D E F G H I J K L M N O P Q R S T U V W X Y Z A C: C D E F G H I J K L M N O P Q R S T U V W X Y Z A B D: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C E: E F G H I J K L M N O P Q R S T U V W X Y Z A B C D F: F G H I J K L M N O P Q R S T U V W X Y Z A B C D E G: G H I J K L M N O P Q R S T U V W X Y Z A B C D E F H: H I J K L M N O P Q R S T U V W X Y Z A B C D E F G I: I J K L M N O P Q R S T U V W X Y Z A B C D E F G H J: J K L M N O P Q R S T U V W X Y Z A B C D E F G H I K: K L M N O P Q R S T U V W X Y Z A B C D E F G H I J L: L M N O P Q R S T U V W X Y Z A B C D E F G H I J K M: M N O P Q R S T U V W X Y Z A B C D E F G H I J K L N: N O P Q R S T U V W X Y Z A B C D E F G H I J K L M

加密算法介绍及如何选择加密算法

加密算法介绍及如何选择加密算法 2008-1-23 选择字号:大 | 中 | 小 导读:随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高。民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度需求的不断提高,近期又出现了AES、ECC等…… 关键词:密码学对称钥匙加密系统非对称密钥加密系统 一.密码学简介 据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。 随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家标准局公布实施了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度需求的不断提高,近期又出现了 AES、ECC 等。 使用密码学可以达到以下目的: 保密性:防止用户的标识或数据被读取。 数据完整性:防止数据被更改。 身份验证:确保数据发自特定的一方。 二. 加密算法介绍 根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。 对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。 非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。

对称加密算法 对称加密算法用来对敏感数据等信息进行加密,常用的算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高; AES 2000年10月,NIST(美国国家标准和技术协会)宣布通过从15种侯选算法中选出的一项新的密匙加密标准。Rijndael被选中成为将来的AES。 Rijndael 是在 1999 年下半年,由研究员 Joan Daemen 和 Vincent Rijmen 创建的。AES 正日益成为加密各种形式的电子数据的实际标准。 美国标准与技术研究院 (NIST) 于 2002 年 5 月 26 日制定了新的高级加密标准 (AES) 规范。 算法原理 AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。 AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。 AES与3DES的比较

java实现几种加密算法

作业6: 有短句“Sun Yat-sen University is a vibrant community of scholarship”,请用下列方法加密: –简单代替密码(移位密码),k=5,q=26; –多表代替密码,其中m=6, K=cipher; –纵行置换密码,假定每行10个字节。 请写出加密后密文。 加密结果: 简单代替加密:Xzs Dfy-xjs Zsnajwxnyd nx f angwfsy htrrzsnyd tk xhmtqfwxmnu 多表代替加密:Ucc Crv-hlr Wvxciiuqif zu p zzdzpux ewbtyekbn sw aroscczhomg 纵向置换加密:Sntbucu yrnhnU aio nintlYistyaav rteacos-r ofhssvm ieiimsp 本作业是使用java编程求解的,以为是求解算法(java语言描述): /* * 简单代替加密 */ public class Ssc { private String name; private int k; private int q; public Ssc(){ this.k = 5; this.q = 26; https://www.360docs.net/doc/627398573.html, = "简单代替加密"; } /** * k为位移量,q为字母表长度 * @param k * @param q */ public Ssc(int k, int q){ this.k = k; this.q = q; https://www.360docs.net/doc/627398573.html, = "简单代替加密"; } /** * 加密 * @param str * @return */ public String encrypt(String str){

五种常用的数据加密方法

五种常用的数据加密方法.txt22真诚是美酒,年份越久越醇香浓型;真诚是焰火,在高处绽放才愈是美丽;真诚是鲜花,送之于人手有余香。一颗孤独的心需要爱的滋润;一颗冰冷的心需要友谊的温暖;一颗绝望的心需要力量的托慰;一颗苍白的心需要真诚的帮助;一颗充满戒备关闭的门是多么需要真诚这一把钥匙打开呀!每台电脑的硬盘中都会有一些不适合公开的隐私或机密文件,如个人照片或客户资料之类的东西。在上网的时候,这些信息很容易被黑客窃取并非法利用。解决这个问题的根本办法就是对重要文件加密,下面介绍五种常见的加密办法。加密方法一: 利用组策略工具,把存放隐私资料的硬盘分区设置为不可访问。具体方法:首先在开始菜单中选择“运行”,输入 gpedit.msc,回车,打开组策略配置窗口。选择“用户配置”->“管理模板”->“Windows 资源管理器”,双击右边的“防止从“我的电脑”访问驱动器”,选择“已启用”,然后在“选择下列组合中的一个”的下拉组合框中选择你希望限制的驱动器,点击确定就可以了。 这时,如果你双击试图打开被限制的驱动器,将会出现错误对话框,提示“本次操作由于这台计算机的限制而被取消。请与您的系统管理员联系。”。这样就可以防止大部分黑客程序和病毒侵犯你的隐私了。绝大多数磁盘加密软件的功能都是利用这个小技巧实现的。这种加密方法比较实用,但是其缺点在于安全系数很低。厉害一点的电脑高手或者病毒程序通常都知道怎么修改组策略,他们也可以把用户设置的组策略限制取消掉。因此这种加密方法不太适合对保密强度要求较高的用户。对于一般的用户,这种加密方法还是有用的。 加密方法二:

利用注册表中的设置,把某些驱动器设置为隐藏。隐藏驱动器方法如下: 在注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\E xplorer中新建一个DWORD值,命名为NoDrives,并为它赋上相应的值。例如想隐藏驱动器C,就赋上十进制的4(注意一定要在赋值对话框中设置为十进制的4)。如果我们新建的NoDrives想隐藏A、B、C三个驱动器,那么只需要将A、B、C 驱动器所对应的DWORD值加起来就可以了。同样的,如果我们需要隐藏D、F、G三个驱动器,那么NoDrives就应该赋值为8+32+64=104。怎么样,应该明白了如何隐藏对应的驱动器吧。目前大部分磁盘隐藏软件的功能都是利用这个小技巧实现的。隐藏之后,WIndows下面就看不见这个驱动器了,就不用担心别人偷窥你的隐私了。 但这仅仅是一种只能防君子,不能防小人的加密方法。因为一个电脑高手很可能知道这个技巧,病毒就更不用说了,病毒编写者肯定也知道这个技巧。只要把注册表改回来,隐藏的驱动器就又回来了。虽然加密强度低,但如果只是对付一下自己的小孩和其他的菜鸟,这种方法也足够了。 加密方法三: 网络上介绍加密方法一和加密方法二的知识性文章已经很多,已经为大家所熟悉了。但是加密方法三却较少有人知道。专家就在这里告诉大家一个秘密:利用Windows自带的“磁盘管理”组件也可以实现硬盘隐藏! 具体操作步骤如下:右键“我的电脑”->“管理”,打开“计算机管理”配置窗口。选择“存储”->“磁盘管理”,选定你希望隐藏的驱动器,右键选择“更改驱动器名和路径”,然后在出现的对话框中选择“删除”即可。很多用户在这里不

RAS加密算法2

用实例给新手讲解RSA加密算法 图为 RSA公开密钥算法的发明人,从左到右Ron Rivest, Adi Shamir, Leonard Adleman. 照片摄于1978年 RSA加密算法是最常用的非对称加密算法,CFCA在证书服务中离不了它。但是有不少新来的同事对它不太了解,恰好看到一本书中作者用实例对它进行了简化而生动的描述,使得高深的数学理论能够被容易地理解。我们经过整理和改写特别推荐给大家阅读,希望能够对时间紧张但是又想了解它的同事有所帮助。 RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名。RSA以它的三个发明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名,这个算法经受住了多年深入的密码分析,虽然密码分析者既不能证明也不能否定RSA的安全性,但这恰恰说明该算法有一定的可信性,目前它已经成为最流行的公开密钥算法。 RSA的安全基于大数分解的难度。其公钥和私钥是一对大素数(100到200位十进制数或更大)的函数。从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积(这是公认的数学难题)。 RSA的公钥、私钥的组成,以及加密、解密的公式可见于下表: 可能各位同事好久没有接触数学了,看了这些公式不免一头雾水。别急,在没有正式讲解RSA加密算法以前,让我们先复习一下数学上的几个基本概念,它们

在后面的介绍中要用到: 一、什么是“素数”? 素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。例如,15=3*5,所以15不是素数;又如,12=6*2=4*3,所以12也不是素数。另一方面,13除了等于13*1以外,不能表示为其它任何两个整数的乘积,所以13是一个素数。素数也称为“质数”。 二、什么是“互质数”(或“互素数”)? 小学数学教材对互质数是这样定义的:“公约数只有1的两个数,叫做互质数。”这里所说的“两个数”是指自然数。 判别方法主要有以下几种(不限于此): (1)两个质数一定是互质数。例如,2与7、13与19。 (2)一个质数如果不能整除另一个合数,这两个数为互质数。例如,3与10、5与 26。 (3)1不是质数也不是合数,它和任何一个自然数在一起都是互质数。如1和9908。 (4)相邻的两个自然数是互质数。如 15与 16。 (5)相邻的两个奇数是互质数。如 49与 51。 (6)大数是质数的两个数是互质数。如97与88。 (7)小数是质数,大数不是小数的倍数的两个数是互质数。如 7和 16。 (8)两个数都是合数(二数差又较大),小数所有的质因数,都不是大数的约数,这两个数是互质数。如357与715,357=3×7×17,而3、7和17都不是715的约数,这两个数为互质数。等等。 三、什么是模指数运算? 指数运算谁都懂,不必说了,先说说模运算。模运算是整数运算,有一个整数m,以n为模做模运算,即m mod n。怎样做呢?让m去被n整除,只取所得的余数作为结果,就叫做模运算。例如,10 mod 3=1;26 mod 6=2;28 mod 2 =0等等。 模指数运算就是先做指数运算,取其结果再做模运算。如 好,现在开始正式讲解RSA加密算法。 算法描述: (1)选择一对不同的、足够大的素数p,q。 (2)计算n=pq。 (3)计算f(n)=(p-1)(q-1),同时对p, q严加保密,不让任何人知道。 (4)找一个与f(n)互质的数e,且1

几种常用文件的加密方法:

几种常用文件的加密方法: 1、Word文件 要给Word文件加密,先打开需加密的文件,点击“工具”菜单→“选项”,弹出“选项”对话框,选择“保存”标签。在“打开权限密码”和“修改权限密码”输入框中键入密码。需要说明一下的是前者密码是用来打开文件的,如果没有这个密码,文件是打不开的。后者是在前者基础上设置是否打开者有权利修改文件,如果没有则只能阅读,而不能修改内容。 2、Excel文件 Excel文件加密方式与Word文件不同,当你编辑完文件时,点击“文件”菜单→“另存为...”,弹出“另存为”对话框,再点击工具栏上的“工具”按钮,弹出下拉菜单,选择“常规选项”,在弹出的设置窗口中输入打开密码和修改密码。点击确定,保存即可。 3、Access文件 Access数据库文件的加密按以下步骤进行: ⑴关闭数据库。如果数据库在网络上共享,要确保所有其他用户关闭了该数据库。 ⑵为数据库复制一个备份并将其存储在安全的地方。 ⑶单击“文件”菜单中的“打开”命令。 ⑷单击“打开”按钮右侧的箭头,然后单击“以独占方式打开”。 ⑸单击“工具”菜单“安全”子菜单上的“设置数据库密码”命令。 ⑹在“密码”框中,键入自己的密码。密码是区分大小写的。 ⑺在“验证”框中,再次键入密码以进行确认,然后单击“确定”按钮。 这样密码即设置完成。下一次打开数据库时,将显示要求输入密码的对话框。 4、WPS文件 WPS文件加密非常简单,只需点击“文件”菜单→“另存为...”,弹出对话框,勾选“文件加密”复选框,又弹出“设置密码”对话框。首先在文本框中输入密码,然后选择加密类型,其中“普通型加密”适用于大多数情况,而“绝密型加密”则适用于对保密要求较高的情况。而且据金山公司称,他们可以帮助客户解除利用“普通型加密”方式加密的文件,而利用“绝密型加密”方式加密的文件他们也无能为力,因此注意保存好密码,以免造成不必要的损失。 二、压缩文件 1、Winzip Winzip是最流行的压缩和解压缩软件,当然它也提供了非常简单的加密功能。 首选新建一个空白的压缩文件,在压缩文件里添加需压缩的文件。点击“Option”菜单中的“Password....”命令,弹出密码设置窗口,在文本框中输入设置的密码。当你输入时,希望文本框的密码不可见,请选上“Mask Password”复选框。

相关文档
最新文档