文档库 最新最全的文档下载
当前位置:文档库 › 异或加密原理

异或加密原理

异或加密原理
异或加密原理

异或的运算方法是一个二进制运算:

1^1=0

0^0=0

1^0=1

0^1=1

两者相等为0,不等为1.

对于一个字符来说,都可以用二进制码来表示.如A:01000001

字符的异或就是对每一位进行二进制运算.

用于加密算法时,假设你要加密的内容为A,密钥为B,则可以用异或加密: C=A^B

在数据中保存C就行了.

用的时候:

A=B^C

即可取得原加密的内容,所以只要知道密钥,就可以完成加密和解密.

#include

main()

{

char a[]="MyPassword"; /*要加密的密码*/

char b[]="cryptographic"; /*密钥*/

int i;

/*加密代码*/

for(i=0;a[i]!='\0';i++)

a[i]=a[i]^b[i];

printf("You Password encrypted: %s\n",a);

/*解密代码*/

for(i=0;a[i]!='\0';i++)

a[i]=a[i]^b[i];

printf("You Password: %s\n",a);

}

RSA加密算法加密与解密过程解析

RSA加密算法加密与解密过程解析 1.加密算法概述 加密算法根据内容是否可以还原分为可逆加密和非可逆加密。 可逆加密根据其加密解密是否使用的同一个密钥而可以分为对称加密和非对称加密。 所谓对称加密即是指在加密和解密时使用的是同一个密钥:举个简单的例子,对一个字符串C做简单的加密处理,对于每个字符都和A做异或,形成密文S。 解密的时候再用密文S和密钥A做异或,还原为原来的字符串C。这种加密方式有一个很大的缺点就是不安全,因为一旦加密用的密钥泄露了之后,就可以用这个密钥破解其他所有的密文。 非对称加密在加密和解密过程中使用不同的密钥,即公钥和私钥。公钥用于加密,所有人都可见,私钥用于解密,只有解密者持有。就算在一次加密过程中原文和密文发生泄漏,破解者在知道原文、密文和公钥的情况下无法推理出私钥,很大程度上保证了数据的安全性。 此处,我们介绍一种非常具有代表性的非对称加密算法,RSA加密算法。RSA 算法是1977年发明的,全称是RSA Public Key System,这个Public Key 就是指的公共密钥。 2.密钥的计算获取过程 密钥的计算过程为:首先选择两个质数p和q,令n=p*q。 令k=?(n)=(p?1)(q?1),原理见4的分析 选择任意整数d,保证其与k互质 取整数e,使得[de]k=[1]k。也就是说de=kt+1,t为某一整数。

3.RSA加密算法的使用过程 同样以一个字符串来进行举例,例如要对字符串the art of programming 进行加密,RSA算法会提供两个公钥e和n,其值为两个正整数,解密方持有一个私钥d,然后开始加密解密过程过程。 1. 首先根据一定的规整将字符串转换为正整数z,例如对应为0到36,转化后形成了一个整数序列。 2. 对于每个字符对应的正整数映射值z,计算其加密值M=(N^e)%n. 其中N^e表示N的e次方。 3. 解密方收到密文后开始解密,计算解密后的值为(M^d)%n,可在此得到正整数z。 4. 根据开始设定的公共转化规则,即可将z转化为对应的字符,获得明文。 4.RSA加密算法原理解析 下面分析其内在的数学原理,说到RSA加密算法就不得不说到欧拉定理。 欧拉定理(Euler’s theorem)是欧拉在证明费马小定理的过程中,发现的一个适用性更广的定理。 首先定义一个函数,叫做欧拉Phi函数,即?(n),其中,n是一个正整数。?(n)=总数(从1到n?1,与n互质整数) 比如5,那么1,2,3,4,都与5互质。与5互质的数有4个。?(5)=4再比如6,与1,5互质,与2,3,4并不互质。因此,?(6)=2

AES算法加解密原理及安全性分析

AES算法加解密原理及安全性分析 刘帅卿 一、AES算法简介 AES算法是高级加密标准算法的简称,其英文名称为Advanced Encryption Standard。该加密标准的出现是因为随着对称密码的发展,以前使用的DES(Data Encryption Standard数据加密标准)算法由于密钥长度较小(56位),已经不适应当今数据加密安全性的要求,因此后来由Joan Daeman和Vincent Rijmen提交的Rijndael算法被提议为AES的最终算法。 AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations)和替换(substitutions)输入数据。加之算法本身复杂的加密过程使得该算法成为数据加密领域的主流。 二、AES算法的基本概念 1、有限域(GF) 由于AES算法中的所有运算都是在有限域当中进行的,所以在理解和实现该算法之前先得打好有限域这一基石才行。通常的数学运算都是在实数域中进行,而AES算法则是在有限域中进行,我们可以将有限域看成是有确定边界范围的正整数集合,在该集合当中,任意两个元素之间的运算结果都仍然落在该集合当中,也即满足运算封闭性。 那么如何才能保证这样的“有限性”(也即封闭性)呢? GF(2w)被称之为伽罗华域,是有限域的典型代表。随着w(=4,8,16,…)的取值不同所形成的有限域范围也不同。AES算法中引入了GF域当中对数学运算的基本定义:将两数的加减法定义为两者的异或运算;将两数的乘法定义为多

pgp加密图解

pgp加密图解 PGP(Pretty Good Privacy),是一个基于RSA公匙加密体系的邮件加密软件。可以用它对邮件保密以防止非授权者阅读,它还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信邮件没有被篡改。它可以可以提供一种安全的通讯方式,而事先并不需要任何保密的渠道用来传递密匙。它采用了一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等,还有一个良好的人机工程设计。 接下来给大家介绍下使用pgp加密文件的方法。 1、当你的pgp安装完成后,你的右下角会出现这样一个锁型图标。 2、右击锁型图标,出现工具面板 3、点击pgpkeys进入pgpkeys面板

4、要对文件进行加密首先要产生公钥和私钥,点击工具栏上的keys,进入new key(或者按快捷键ctrl+N)。 5、进入密钥生成向导面板

6、点击下一步,输入你的名字和邮箱地址,点击下一步。 7、进入密码设置面板,两次输入正确输入你的密码,确保安全性,要确保你的密码长度大于8位,勾选“Hide Typing”可使你的密码明文

显示。 8、点击下一步,若密码小于8为,会出现如图的提示。 9、若要重新输入密码点击上一步,不重新设置也没关系,点击下一步。

10、再次点击下一步,提示生成密钥完成。 11、此时你会发现在pgp的面板上会多出一个用户,说明生成密钥成功。

12、要想是对方使用你的公钥进行加密,首先应导出你的公钥。点击keys里的Export,进入导出密钥面板。 13、进入导出密钥面板,选择密钥导出的位置,点击保存(下面有两

流密码加密原理

流密码加密实验 【实验原理】 流密码(stream cipher)也称为序列密码,每次加密处理数据流的一位或一个字节,加解密使用相同的密钥,是对称密码算法的一种。1949年Shannon证明只有一次一密密码体制是绝对安全的,为流密码技术的研究提供了强大的支持,一次一密的密码方案是流密码的雏形。流密码的基本思想是利用密钥K产生一个密钥流k1k2…k n对明文流M=m1m2…m n进行如下加密:C=c1c2…c n=E k1(m1)E k2(m2)…E kn(m n)。若流密码所使用的是真正随机产生的、与消息流长度相同的密钥流,则此时的流密码就是一次一密的密码体制。 流密码分为同步流密码和自同步流密码两种。同步流密码的密钥流的产生独立于明文和密文;自同步流密码的密钥流的产生与密钥和已经产生的固定数量的密文字符有关,即是一种有记忆变换的序列密码。 一、RC4流密码算法 RC4是1987年Ron Rivest为RSA公司设计的一种流密码,是一个面向字节操作、具有密钥长度可变特性的流密码,是目前为数不多的公开的流密码算法。目前的RC4至少使用128为的密钥。RC4的算法可简单描述为:对于n位长的字,有共N=2n个可能的内部置换状态矢量S=S[0],S[1],…,S[N-1],这些状态是保密的。密钥流K由S中的2n个元素按一定方式选出一个元素而生成,每生成一个密钥值,S中的元素就重新置换一次,自始至终置换后的S包含从0到N-1的所有n比特数。 RC4有两个主要算法:密钥调度算法KSA和伪随机数生成算法PRGA。KSA算法的作用是将一个随机密钥变换成一个初始置换,及相当于初始化状态矢量S,然后PRGA利用KSA 生成的初始置换生成一个伪随机数出序列。 密钥调度算法KSA的算法描述如下: fori=0to N-1do S[i]=i; j=0; fori=0to N-1do j=(j+S[i]+K[i mod L])mod N; swap(S[i],S[j]); 初始化时,S中元素的值被设置为0到N-1,密钥长度为L个字节,从S[0]到S[N-1]对于每个S[i]根据有密钥K确定的方案,将S[i]置换为S中的另一个元素。 伪随机数生成算法PRGA的算法描述如下: i=0; j=0; while(true) i=(i+1)mod N; j=(j+S[i])mod N; swap(S[i],s[j]); output k=S[(S[i]+S[j])mod N]; PRGA算法主要完成密钥流的生成,从S[0]到S[N-1],对每个S[i],根据当前S的值,将S[i]与S中的另一个元素置换,,当S[N-1]完成置换后,操作再从S[0]开始重复。

加密软件技术原理

企业加密软件是近十年来热度非常高的一款软件安全产品,并且呈现着每年逐渐上升的趋势。 目前,市场上加密技术主要分为透明加密以及磁盘加密两种方式;因透明加密技术的操作简单并且不改变员工工作习惯,因此更加容易得到青睐。 下面对透明加密技术原理与标准作一个简析 AES加密标准 1977年1月公布的数据加密标准DES(Data Encrption Standard)经过20年的实践应用后,现在已被认为是不可靠的。1997年1月美国国家标准和技术研究所(NIST)发布了高级加密标准(AES-FIPS)的研发计划,并于同年9月正式发布了征集候选算法公告,NIST希望确定一种保护敏感信息的公开、免费并且全球通用的算法作为AES,以代替DES。NIST对算法的基本要求是:算法必须是私钥体制的分组密码,支持128位分组长度和129、192、256bits密钥长度。AES的研究现状 从1997年NIST发布了高级加密标准AES的研发计划到现在,对AES的研究大致可以分成三个阶段。第一阶段是从1997到2000年,研究的主要方向是提出候选算法并对各候选算法的性能进行分析。在此期间共提出了十五个候选算法,最终Rijndael算法胜出并用于AES 中。Rijndael算法是一种可变分组长度和密钥长度的迭代型分组密

码,它的分组长度和密钥长度均可独立地指定为128bits、192bits、256bits,它以其多方面的优良性能,成为AES的最佳选择。Rijndael 算法能抵抗现在的所有己知密码攻击,它的密钥建立时间极短且灵活性强,它极低的内存要求使其非常适合在存储器受限的环境中使用,并且表现出很好的性能。第二阶段是从2000年Rijndael算法胜出后到2001年NIST发布FIPS PUBS197文件前。在此阶段对AES的研究转到了对Rijndael算法的研究和分析、设计AES的工作模式上。第三阶段是从FIPS PUBS197发布到现在。在此阶段,研究的方向可以分成两个主要方向:一个是继续研究Rijndael算法本身的性能,特别是其安全性分析;另一个就是AES的实现和应用的研究。 算法设计主要研究算法设计遵循的原则和整体结构,为性能分析提供了一条途径。从算法的结构上分析算法性能是简单有效的,研究算法整体结构上的缺陷为提出新的密码分析方法提供新的手段。另一方面,研究AES的算法设计对研发新的分组密码提供了设计原则和参考。目前分组数据加密算法的整体结构有两大类:Feistel网络、非平衡Feistel网络和SP网络。 性能分析主要研究算法的各项特性,性能分析主要可以分为实现分析和密码分析两类。实现分析主要研究AES算法可实现的能力。当前实现性分析主要集中在AES的硬、软件实现的难易度和实现算法的效率等领域中。密码分析则是在理论上对现有加密算法进行研究的主要方向。密码分析主要研究AES算法抵抗现有己知密码攻击的能力,

PGP加、解密工具软件的使用

实验项目四 PGP软件的使用 一、项目编号:4 二、实验课时:2 三、主要内容及目的 1.熟悉PGP (Pretty Good Privacy)的操作界面 2.使用 PGP 产生和管理密钥 3.使用 PGP 进行加密/解密和签名/验证 4.使用 PGP 销毁秘密文件。 四、实验要求 1、通过 PGP 的使用,加深对传统加密、公钥加密、混合加密和数字签名等概念的理解。 2、熟悉PGP(Pretty Good Privacy)的主要功能 是一个基于RSA公匙加密体系的加密软件,它采用了一种RSA和传统加密的杂合算法,主要用于: ⑴对计算机上的文件加密。 使用强大的IDEA加密算法对存储在计算机上的文件加密。经加密的文件只能由知道密钥的人解密阅读。 ⑵对电子邮件进行加密。 使用公开密钥加密技术。经加密的电子邮件只有收件人本人才能解密阅读。 ⑶对文件或电子邮件作数字签名。 使用公开密钥加密技术对文件或电子邮件作数字签名,鉴定人可以用签名人的公开密钥鉴别真伪。 五、实验环境 windows XP, windows 7,能访问INTERNET。 六、操作步骤及工作要点 1、熟悉PGP (Pretty Good Privacy)的操作界面 1.1 界面预览 下图即为简单配置后的PGP Desktop的界面。

1.2 说明 PGP主要使用非对称式加密,每个使用者都拥有至少一对私钥和公钥,数据使用公钥加密后只能使用它相匹对的私钥解密。数据若使用私钥加密,则任何公钥的持有者可以验证资料是否确定由私钥的使用者所传送。 注意:界面预览中看到的key,包括自己的keypair及其其他人的公钥。Keypair的图像上有两把钥匙,代表公钥与私钥。公钥的图像上只有一把钥匙,这些通常都是别人发给你的公钥。 1.3 发送自己的公钥给别人。 为了要让别人将资料加密传给你,你必须把你的公钥给他。有下面几种方法可以将公钥给别人。 第一种方式:直接email寄给对方。 1. 在key界面的右边,鼠标右击你的公钥,然后选择send to→mail recipient。如下图:

加密狗的概述与破解原理

加密狗的概述与破解原理 加密狗的概述: 加密狗是外形酷似U盘的一种硬件设备,正名加密锁,后来发展成如今的一个软件保护的通俗行业名词,"加密狗"是一种插在计算机并行口上的软硬件结合的加密产品(新型加密狗也有usb口的)。一般都有几十或几百字节的非易失性存储空间可供读写,现在较新的狗内部还包含了单片机。软件开发者可以通过接口函数和软件狗进行数据交换(即对软件狗进行读写),来检查软件狗是否插在接口上;或者直接用软件狗附带的工具加密自己EXE文件(俗称"包壳")。这样,软件开发者可以在软件中设置多处软件锁,利用软件狗做为钥匙来打开这些锁;如果没插软件狗或软件狗不对应,软件将不能正常执行。 加密狗通过在软件执行过程中和加密狗交换数据来实现加密的.加密狗内置 单片机电路(也称CPU),使得加密狗具有判断、分析的处理能力,增强了主动的反解密能力。这种加密产品称它为"智能型"加密狗.加密狗内置的单片机里包含有专用于加密的算法软件,该软件被写入单片机后,就不能再被读出。这样,就保证了加密狗硬件不能被复制。同时,加密算法是不可预知、不可逆的。加密算法可以把一个数字或字符变换成一个整数,如DogConvert(1)=12345、DogConver t(A)=43565。 加密狗是为软件开发商提供的一种智能型的软件保护工具,它包含一个安装在计算机并行口或USB 口上的硬件,及一套适用于各种语言的接口软件和工具软件。加密狗基于硬件保护技术,其目的是通过对软件与数据的保护防止知识产权被非法使用。 加密狗的工作原理: 加密狗通过在软件执行过程中和加密狗交换数据来实现加密的.加密狗内置 单片机电路(也称CPU),使得加密狗具有判断、分析的处理能力,增强了主动的反解密能力。这种加密产品称它为"智能型"加密狗.加密狗内置的单片机里包含有专用于加密的算法软件,该软件被写入单片机后,就不能再被读出。这样,就保证了加密狗硬件不能被复制。同时,加密算法是不可预知、不可逆的。加密算法可以把一个数字或字符变换成一个整数,如DogConvert(1)=12345、DogConver t(A)=43565。下面,我们举个例子说明单片机算法的使用。比如一段程序中有这样一句:A=Fx(3)。程序要根据常量3来得到变量A的值。于是,我们就可以把原程序这样改写:A=Fx(DogConvert(1)-12342)。那么原程序中就不会出现常量3,而取之以DogConvert(1)-12342。这样,只有软件编写者才知道实际调用的常量是3。而如果没有加密狗,DogConvert函数就不能返回正确结果,结果算式A=F x(DogConvert(1)-12342)结果也肯定不会正确。这种使盗版用户得不到软件使用价值的加密方式,要比一发现非法使用就警告、中止的加密方式更温和、更隐蔽、

RSA加密算法的基本原理

RSA加密算法的基本原理 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的约数,

量子加密技术

量子加密技术 摘要 自从BB84量子密钥分配协议提出以来,量子加密技术得到了迅速发展,以加密技术为基础的量子信息安全技术也得到了快速发展。为了更全面地、系统地了解量子信息安全技术当前的发展状况和以后发展的趋势,文中通过资料查新,以量子加密技术为基础,阐述了量子密钥分配协议及其实现、量子身份认证和量子数字签名、量子比特承诺等多种基于量子特性的信息安全技术的新发展和新动向。 关键词:信息安全;量子态;量子加密;量子信息安全技术

一、绪论 21世纪是信息技术高速进步的时代,而互联网技术为我们带来便捷和海量信息服务的同时,由于我们过多的依赖网络去工作和生活,网络通信、电子商务、电子金融等等大量敏感信息通过网络去传播。为了保护个人信息的安全性,防止被盗和篡改,信息加密成为解决问题的关键。那么是否有绝对可靠的加密方法,保证信息的安全呢? 随着社会信息化的迅猛发展,信息安全问题日益受到世界各国的广泛关注。密码作为信息安全的重要支撑而备受重视,各国都在努力寻找和建立绝对安全的密码体系。而量子信息尤其是量子计算研究的迅速发展,使现代密码学的安全性受到了越来越多的挑战。与现代密码学不同的是,量子密码在安全性和管理技术方面都具有独特的优势。因此,量子密码受到世界密码领域的高度关注,并成为许多发达国家优先支持的重大课题。 二、量子加密技术的相关理论 1、量子加密技术的起源 美国科学家Wiesner首先将量子物理用于密码学的研究之中,他于 1969 年提出可利用单量子态制造不可伪造的“电子钞票”。1984 年,Bennett 和Brassard 提出利用单光子偏振态实现第一个 QKD(量子密钥分发)协议—BB84 方案。1992年,Bennett 又提出 B92 方案。2005 年美国国防部高级研究计划署已引入基于量子通信编码的无线连接网络,包括 BBN 办公室、哈佛大学、波士顿大学等 10个网络节点。2006 年三菱电机、NEC、东京大学生产技术研究所报道了利用 2个不同的量子加密通信系统开发出一种新型网络,并公开进行加密文件的传输演示。在确保量子加密安全性的条件下,将密钥传输距离延长到200km。 2、量子加密技术的概念及原理 量子密码,是以物理学基本定律作为安全模式,而非传统的数学演算法则或者计算技巧所提供的一种密钥分发方式,量子密码的核心任务是分发安全的密钥,建立安全的密码通信体制,进行安全通讯。量子密码术并不用于传输密文,而是用于建立、传输密码本。量子密码系统基于如下基本原理:量子互补原理(或称量子不确定原理),量子不可克隆和不可擦除原理,从而保证了量子密码系统的不可破译性。 3、基于单光子技术(即BB84协议)的量子密码方案主要过程: a)发送方生成一系列光子,这些光子都被随机编码为四个偏振方向; b)接收方对接收到的光子进行偏振测量; c)接收方在公开信道上公布每次测量基的类型及没测量到任何信号的事件序列,但不公布每次有效测量事件中所测到的具体结果; d)如果没有窃听干扰,则双方各自经典二进制数据系列应相同。如果有窃听行为,因而将至少导致发送方和接收方有一半的二进制数据不相符合,得知信息有泄露。 4、量子密码系统的安全性。 在单光子密码系统中,通讯密钥是编码在单光子上的,并且通过量子相干信道传送的。因此任何受经典物理规律支配的密码分析者不可能施行在经典密码系统中常采用的攻击方法:

MD5加密算法原理

MD5加密算法原理 MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但MD2的设计与MD4和MD5完全不同,那是因为MD2是为8位机器做过设计优化的,而MD4和MD5却是面向32位的电脑。这三个算法的描述和C语言源代码在Internet RFCs 1321中有详细的描述 (https://www.wendangku.net/doc/bf13188890.html,/rfc/rfc1321.txt),这是一份最权威的文档,由Ronald L. Rivest 在1992年8月向IEFT提交。. . Van Oorschot和Wiener曾经考虑过一个在散列中暴力搜寻冲突的函数(Brute-Force Hash Function),而且他们猜测一个被设计专门用来搜索MD5冲突的机器(这台机器在1994年的制造成本大约是一百万美元)可以平均每24天就找到一个冲突。但单从1991年到2001年这10年间,竟没有出现替代MD5算法的MD6或被叫做其他什么名字的新算法这一点,我们就可以看出这个瑕疵并没有太多的影响MD5的安全性。上面所有这些都不足以成为MD5 的在实际应用中的问题。并且,由于MD5算法的使用不需要支付任何版权费用的,所以在一般的情况下(非绝密应用领域。但即便是应用在绝密领域内,MD5也不失为一种非常优秀的中间技术),MD5怎么都应该算得上是非常安全的了。 算法的应用 MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在UNIX下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如: MD5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461 这就是tanajiya.tar.gz文件的数字签名。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。如果在以后传播这个文件的过程中,无论文件的内容发生了任何形式的改变(包括人为修改或者下载过程中线路不稳定引起的传输错误等),只要你对这个文件重新计算MD5时就会发现信息摘要不相同,由此可以确定你得到的只是一个不正确的文件。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的"抵赖",这就是所谓的数字签名应用。 MD5还广泛用于加密和解密技术上。比如在UNIX系统中用户的密码就是以MD5(或其它类似的算法)经加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。

十分钟读懂加密技术----对称加密技术

十分钟读懂加密技术(一)----对称加密技术 加密技术包括加密和解密两个运算过程。加密是指将特定可读的信息或数据(明文)转化为不可读的内容(密文)的过程,这个过程一般需要算法和密钥两个元素,具体过程对于不同的加密技术来说有所不同。解密是加密过程的逆运算,是将不可读的密文恢复为明文的过程,这个过程也需要密钥的参与。加密技术依据加密过程和解密过程使用的密钥是否一致可以分为两类:对称加密和非对称加密,也称私钥加密和公钥加密。本文主要介绍对称加密技术。 一、对称加密技术的原理 对称加密(私钥加密),顾名思义,即加密和解密两个过程使用的密钥相同。双方(或多方)使用相同的密钥来对需要传递的信息或数据进行加密或解密以构建一个信息通道从而达到交流传输的目的。 如下图所示,如果Alice想要通过互联网发送信息给Bob,但是又怀疑互联网不是一个安全的信息通道,很可能存在第三方恶意机构会拦截她发送的信息。利用对称加密技术,Alice可以用她事先和Bob商量好的密钥先对要发送的消息进行加密,把消息转化为不可读的密文,再将密文通过互联网发送给Bob。这样即使被第三方拦截,得到的也只是密文,难以解读Alice原本要发送的消息。在Bob接收到密文后,再使用与Alice一致的密钥对密文进行解密,将密文恢复到明文。而当Bob想发送消息给Alice时,他的做法也是一样。在这个消息传递中,只要恶意机构无法得到Alice和Bob使用的密钥,那么便无法轻松地对密文进行解密,这种加密技术就是安全的。

图1 对称加密技术 二、早期的对称加密技术 早期的加密技术都是对称加密技术,最早1可以追溯到古希腊时期斯巴达城使用的斯巴达密码棒(Scytale )2。到了古罗马时期,出现了非常著名的凯撒密码(CaesarCipher )。 斯巴达密码棒是古希腊时期斯巴达城邦主要运用的一种加密工具。其原理是利用木棍对信息字母进行简单地位移,只有将写有信息的长条皮革缠绕在特定直径的木棍上时,才能阅读出信件的真实信息,否则只是一堆无意义的字母组合。 凯撒密码与斯巴达密码棒的原理基本相同,也是对原信息进行简单的数位偏移,将明文转化为密文的加密方式。比如偏移数位是3,那么字母A 就被替换为字母D ,以此类推。这种加密方式据说最早是用于凯撒和将军之间的交流。 1有关于密码学的历史发展,参见Kahn D 在1996年出版的“The Codebreakers ”。该书全面介绍了从4000年前到20世纪有关密码学的重大发展事件。 2 Kelly T. The myth of the skytale[J]. Cryptologia, 1998, 22(3):244-260. 加密 解密 Key Alice Bob 737909666C0288596DBF116 A10DDF14ACE3078D70F7134 E325EFBC497272F6BA

使用PGP进行加解密和数字签名

实验三:使用PGP进行加解密和数字签名 一实验目的: 通过使用PGP软件进行加密解密和数字签名,加深对公开密钥体制的加密解密和数字签名的理解。 二实验内容: 生成密钥对、导入导出公钥、对文件进行加密、解密、对文件进行数字签名和验证 三实验环境: Windows x操作系统 PGP Desktop 8.03 四实验要求 2人一组,相互配合完成实验 五实验步骤: 一、实验简介: 为了保障我们在传输邮件过程的安全性性,我们引入了pgp软件。本实验主要介绍了pgp软件的安装、如何使用PGP创建密钥对,如何使用PGP输出和签名公共密钥,如何使用PGP和Outlook Express发送并接收加密的电子邮件。同时,通过此次实验,可以加深学生对密码学有关知识的认识和理解。 安装pgp软件 1.双击pgp8.exe,安装PGP。 2.在Welcome屏幕中单击“下一步”。

3.单击“Yes”,接受软件许可协议。 4.阅读Read Me文件,然后单击“下一步”。

5.出现一个窗体,让用户选择是否已经有了Keyring,这时选择“No,I'm a new user”。 6.设定安装位置,然后单击“下一步”。

7.确认为Outlook Express选择了插件程序,然后单击“下一步”。 8.在Start Copying Files部分检查一下设置并单击“下一步”,PGP将开始安

装。 9.安装结束后,系统将提示重启,选择“OK”,系统重新启动。 10.重新启动后,会弹出一个PGP License Authorization的对话框。输入PGP 的许可证号,就可以注册并认证。

AES加密算法原理(图文)

AES加密算法原理(图文) 随着对称密码的发展,DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NIST公开征集新的数据加密标准,即AES[1]。经过三轮的筛选,比利时Joan Daeman和Vincent Rijmen提交的Rijndael算法被提议为AES的最终算法。此算法将成为美国新的数据加密标准而被广泛应用在各个领域中。尽管人们对AES还有不同的看法,但总体来说,AES作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点。AES设计有三个密钥长度:128,192,256位,相对而言,AES的128密钥比DES的56密钥强1021倍[2]。AES算法主要包括三个方面:轮变化、圈数和密钥扩展。 AES 是一个新的可以用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和256 位密钥,并且用128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations )和替换(substitutions)输入数据。Figure 1 显示了AES 用192位密钥对一个16位字节数据块进行加密和解密的情形。

Figure 1 部分数据 AES算法概述 AES 算法是基于置换和代替的。置换是数据的重新排列,而代替是用一个单元数据替换另一个。AES 使用了几种不同的技术来实现置换和替换。为了阐明这些技术,让我们用Figure 1 所示的数据讨论一个具体的AES 加密例子。下面是你要加密的128位值以及它们对应的索引数组: 00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 192位密钥的值是: 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 170 1 2 3 4 5 6 7 8 9 10 1112 13 14 15 16 17 18 19 20 21 22 23

善用PGP加密工具的六大技巧

善用PGP加密工具的六大技巧 (原載IThome 企業資安專刊, 2008/4/15出版) 資料加密的必要性 根據Forrester Research研究,過去大家都把資安重點放在IT環境(Infrastructure-level)的層層防護上(例如防火牆、入侵偵測、防毒等),而忽略了資料(Data-level)的防護,未來無論是企業或個人,以資料為中心的(Data Centric)防衛策略會越來越重要。 筆記型電腦遺失或被偷、硬碟被盜、隨身碟遺失、電腦送修時資料被複製出去、磁帶或光碟寄送過程中遺失、電子郵件或FTP傳檔中被攔截竊取…等等每日層出不窮的新聞報導,讓大家對電腦既喜愛又怕受傷害。其實只要一些很簡單的方法與工具,就可免除這些資料遺失或外洩的風險。將資料加密起來,讓不相干的人即使拿到也毫無用處,這是資料安全最簡單也是最根本的做法。 加密的方法 所謂資料加密,就是透過某種方法將明文資料亂碼化,讓人看不懂;當本人要使用時再把它解密回來。至於這亂碼過的資料是否容易被破解?這就涉及使用的「亂碼方法」(Cryptography密碼學)了。一般加密方法分為兩類,一是對稱式加密,使用同一把金鑰(Key)來加密與解密,常見的對稱式演算法如DES, 3DES, AES 等;另一類是非對稱式演算法,使用一對金鑰(公鑰與私鑰)來加解密,用公鑰加密過資料只有用其對應的私鑰才能解得回來,而用私鑰加密過資料只有用其對應的公鑰才能解得回來;公鑰可以公開出去,私鑰則必須好好保管在自己的電腦裡,常見的非對稱式演算法如RSA, DSA等。這兩類加密演算法主要用途不同,在此不再細述。加密的強度(容不容意被破解)還依靠使用金鑰的長度及如何產生及保管金鑰。金鑰如果是隨機產生(Random)而不是人為選擇的,通常只能用「暴力」法來破解,這就要看需要花多少時間與成本了。 如何選擇好的加密工具 一個好的加密工具軟體至少需俱備: 1.支援最新最安全的主流加密演算法; 2.支援最大金鑰長度; 3.容易使用的操作介面及金鑰管理; 4.經過長時間眾多使用者的粹練;

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

加密算法介绍及如何选择加密算法 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的比较

凯撒密码的加密和解密

关于凯撒密码的实现原理 班级:姓名:学号:指导老师: 一、设计要求说明 1、设计一个凯撒密码的加密和解密的程序,要求输入一段字符和密码,输出相应的密文,完成加密过程; 若输入被加密的密文及解密密钥,能还原出原文,完成解密。 2、语言不限,工具不限,独立完成,参加答辩。 3、严格按照格式的要求完成文档,在第六部分的运行结果分析中,要求抓图说明。 二、基础知识介绍 凯撒密码的历史 凯撒密码(caeser)是罗马扩张时期朱利斯?凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。 古罗马随笔作家修托尼厄斯在他的作品中披露,凯撒常用一种“密表”给他的朋友写信。这里所说的密表,在密码学上称为“凯撒密表”。用现代的眼光看,凯撒密表是一种相当简单的加密变换,就是把明文中的每一个字母用它在字母表上位置后面的第三个字母代替。古罗马文字就是现在所称的拉丁文,其字母就是我们从英语中熟知的那26个拉丁字母。因此,凯撒密表就是用d代a,用e代b,……,用z代w。这些代替规则也可用一张表格来表示,所以叫“密表”。 基本原理 在密码学中存在着各种各样的置换方式,但所有不同的置换方式都包含2个相同的元素。密钥和协议(算法)。凯撒密码的密钥是3,算法是将普通字母表中的字母用密钥对应的字母替换。置换加密的优点就在于它易于实施却难于破解. 发送方和接收方很容易事先商量好一个密钥,然后通过密钥从明文中生成密文,即是敌人若获取密文,通过密文直接猜测其代表的意义,在实践中是不可能的。 凯撒密码的加密算法极其简单。其加密过程如下: 在这里,我们做此约定:明文记为m,密文记为c,加密变换记为E(k1,m)(其中k1为密钥),解密变换记为D(k2,m)(k2为解密密钥)(在这里k1=k2,不妨记为k)。凯撒密码的加密过程可记为如下一个变换:c≡m+k mod n (其中n为基本字符个数) 同样,解密过程可表示为: m≡c+k mod n (其中n为基本字符个数) 对于计算机而言,n可取256或128,m、k、c均为一个8bit的二进制数。显然,这种加密算法极不安全,即使采用穷举法,最多也只要255次即可破译。当然,究其本身而言,仍然是一个单表置换,因此,频率分析法对其仍是有效的。 加密解密算法 恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候(解密时的密钥就是3): 明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ 密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC 使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。例如: 明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 密文:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ 恺撒密码的加密、解密方法还能够通过同余数的数学方法进行计算。首先将字母用数字代替,A=0,B=1,...,Z=25。此时偏移量为n的加密方法即为:

密钥原理

金融行业密钥详解 金融行业因为对数据比较敏感,所以对数据的加密也相应的比较重视。在其中有关密钥及加密方面的文章很少,并且散发在各个银行及公司的手中,在网上没有专门对这部分进行介绍的。本文对金融行业的密钥进行较深入的介绍,包括象到底什么是主密钥(MasterKey)、传输密钥(MacKey),为什么我们需要这些东西等。 本文采取追源溯本的方式,力求让对这感兴趣的人达到知其然,同时也知其所以然,而不是模模糊糊的知道几个概念和名词。因为本文主要是针对对金融行业密钥不是很熟悉的人,所以如果你对密钥很熟悉就不必仔细看了。 好了,咱们言规正传。我们知道,金融行业有很多数据要在网络上传递,包括从前置到主机,从自助终端到前置等,这些数据在网络上传来传去,我们很容易就会想到安全性的问题,如果这些数据被人窃取或拦截下来,那我们怎么敢在银行存钱了。这个问题在计算机出现时就被前人考虑到了,所以出现了很多各种各样的加解密技术。 抛开这些不管,假设当初由我们自己来设计怎样解决数据被窃取的情况。假设我们有一段数据,是ATM 取款的报文,包括一个人的磁卡号、密码、取款金额,现在需要将这些数据从一台ATM机器传到前置机处理,这些数据是比较机密的,如果被人窃取了,就可以用该卡号和密码把帐户中的钱取走。 首先,我们可以想到用专用的银行内部网络,外面的人无法获得网络的访问权。这个仔细想想显然不可行的,因为一是不能保证外人一定没办法进入银行内部网络,二是银行内部人员作案是没法防止的。 接着,我们很容易想到,既然保证数据不被窃取的可能性很小,那我们何不变换一下思路,数据避免不了被窃取,那我如果将数据处理下,让你即使窃取到数据,也是一些无用的乱码,这样不就解决问题了吗。这个想法比较接近现在的做法了,当前置机接收到了数据,它肯定是对数据进行反处理,即与ATM端完全步骤相反的数据处理,即可得到明文的数据。我们再进一步想想,如果因为某种原因,报文中的取款金额被改变了,这样就会导致ATM出的钱和前置扣帐记录的钱不一致的情况,看来我们必须加上一个验证机制,当前置机收到ATM发送的一个报文时,能够确认报文中的数据在网络传输过程中没有被更改过。 怎样实现?最简单的,象计算机串口通讯一样,对通讯数据每一位进行异或,得到0或1,把0或1放在在通讯数据后面,算是加上一个奇偶校验位,收到数据同样对数据每位进行异或,得到0或1,再判断下收到数据最后一位与算出来的是否一致。这种方式太简单了,对于上面提到的ATM到前置机的报文来说,没什么用处,不过我们可以将对数据每一位异或的算法改成一个比较复杂点的。 因为DES算法已经出来了很多年了,并且在金融行业也有广泛的应用,我们何不用DES算法进行处理,来解决上面的问题呢。我们应该了解DES算法(此处指单DES)的,就是用一个64bit 的Key对64bit 的数据进行处理,得到加密后的64bit数据。那我们用一个Key对上面的报文进行DES算法,得到加密后的64bit数据,放到报文的最后,跟报文一起送到前置机,前置机收到报文后,同样用Key对数据(不包括最后的64bit加密数据)进行DES加密,得出64bit的数据,用该数据与ATM发送过来的报文最后的64bit数据比较,如果两个数据相同,说明报文没有中途被更改过。 再进一步,因为DES只能够对64bit的数据进行加密,一个报文可不止64bit,哪我们怎么处理呢?只对报文开头的64bit加密?这个是显然不够的。

相关文档