1.如何利用DES加密的算法保护Java源代码
Java语言是一种非常适用于网络编程的语言,它的基本结构与C++极为相似,但抛弃了C/C++中指针等内容,同时它吸收了Smalltalk、C++面向对象的编程思想。
它具有简单性、鲁棒性、可移植性、动态性等特点。这些特点使得Java成为跨平台应用开发的一种规范,在世界范围内广泛流传。
加密Java源码的原因 Java源代码经过编译以后在JVM中执行。由于JVM界面是完全透明的,Java类文件能够很容易通过反编译器重新转换成源代码。
因此,所有的算法、类文件等都可以以源代码的形式被公开,使得软件不能受到保护,为了保护产权,一般可以有以下几种方法: (1)"模糊"类文件,加大反编译器反编译源代码文件的难度。然而,可以修改反编译器,使之能够处理这些模糊类文件。
所以仅仅依赖"模糊类文件"来保证代码的安全是不够的。 (2)流行的加密工具对源文件进行加密,比如PGP(Pretty Good Privacy)或GPG(GNU Privacy Guard)。
这时,最终用户在运行应用之前必须先进行解密。但解密之后,最终用户就有了一份不加密的类文件,这和事先不进行加密没有什么差别。
(3)加密类文件,在运行中JVM用定制的类装载器(Class Loader)解密类文件。Java运行时装入字节码的机制隐含地意味着可以对字节码进行修改。
JVM每次装入类文件时都需要一个称为ClassLoader的对象,这个对象负责把新的类装入正在运行的JVM。JVM给ClassLoader一个包含了待装入类(例如java.lang.Object)名字的字符串,然后由ClassLoader负责找到类文件,装入原始数据,并把它转换成一个Class对象。
用户下载的是加密过的类文件,在加密类文件装入之时进行解密,因此可以看成是一种即时解密器。由于解密后的字节码文件永远不会保存到文件系统,所以窃密者很难得到解密后的代码。
由于把原始字节码转换成Class对象的过程完全由系统负责,所以创建定制ClassLoader对象其实并不困难,只需先获得原始数据,接着就可以进行包含解密在内的任何转换。 Java密码体系和Java密码扩展 Java密码体系(JCA)和Java密码扩展(JCE)的设计目的是为Java提供与实现无关的加密函数API。
它们都用factory方法来创建类的例程,然后把实际的加密函数委托给提供者指定的底层引擎,引擎中为类提供了服务提供者接口在Java中实现数据的加密/解密,是使用其内置的JCE(Java加密扩展)来实现的。Java开发工具集1.1为实现包括数字签名和信息摘要在内的加密功能,推出了一种基于供应商的新型灵活应用编程接口。
Java密码体系结构支持供应商的互操作,同时支持硬件和软件实现。 Java密码学结构设计遵循两个原则: (1)算法的独立性和可靠性。
(2)实现的独立性和相互作用性。 算法的独立性是通过定义密码服务类来获得。
用户只需了解密码算法的概念,而不用去关心如何实现这些概念。实现的独立性和相互作用性通过密码服务提供器来实现。
密码服务提供器是实现一个或多个密码服务的一个或多个程序包。软件开发商根据一定接口,将各种算法实现后,打包成一个提供器,用户可以安装不同的提供器。
安装和配置提供器,可将包含提供器的ZIP和JAR文件放在CLASSPATH下,再编辑Java安全属性文件来设置定义一个提供器。Java运行环境Sun版本时, 提供一个缺省的提供器Sun。
下面介绍DES算法及如何利用DES算法加密和解密类文件的步骤。 DES算法简介 DES(Data Encryption Standard)是发明最早的最广泛使用的分组对称加密算法。
DES算法的入口参数有三个:Key、Data、Mode。
2.简述des的加密运算法则
微软.NET Framework安全性概述本文提供了Microsoft .NET Framework的安全结构,包括基于证据的安全性的概述,基于安全,认证和授权的角色,以及独立存储,密码加密和可扩展性的概念。
文中还概述了.NET框架安全策略为开发人员提供主要好处管理员和最终用户。本文假设读者已经熟悉.NET Framework公共语言运行库和托管代码的基本概念。
介绍在当今的软件环境的当前的安全问题,很多执行许多任务的应用程序的来源。信心在应用程序代码是一个主要的要求,因为我们谁不想要的软件或破坏信息做。
离开给定的安全策略不允许不当获取敏感信息,或将本地计算机受到恶意程序或甚至有通常的错误代码。在过去,安全体系结构提供了一种基于用户帐户和访问控制隔离 - 充分获得这些限制范围内的代码,并假定具有由用户特定的码相同的信任度可以运行。
不幸的是,如果所有程序都代表用户的运行,将码隔离,以保护程序的用户不会被其他用户使用是不够的。不能完全信任的代码另一种情况是常转移至在此代码实施的“沙箱”模型运行在一个孤立的环境中无法获得大部分服务。
今天,成功的应用安全解决方案必须能够加强这两个安全模型间的平衡。它必须提供对资源的访问,以进行有效的工作,它需要仔细控制应用程序的安全性,以确保代码是识别,检测,并给予相应的安全级别。
.NET Framework提供了这样的安全模型。 Microsoft .NET框架的安全解决方案.NET Framework安全解决方案基于托管代码的概念,以及由通用语言运行时(CLR)中运行,以加强安全性的规则。
大多数托管代码需要进行验证,以确保类型安全和良好行为等预先定义的安全属性。例如,验证码,如收到将拒绝提供调用8字节参数访问一个4字节的值声明的,因为它不是类型安全的。
验证过程还确保执行流只传送到一个已知位置,诸如入口点方法 - 一个过程,消除跳到执行任何位置的能力。验证不会阻止类型安全的代码执行,造成损害之前,他们捕捉到许多常见的编程错误。
通常的弱点 - 如缓存溢出,对任意或没有内存未初始化的内存读取,控制自由转会 - 都不再可能出现。这将有利于最终用户,因为它是前其执行检查。
这也有利于开发商,他们会发现很多常见错误(在过去的发展前一直困扰)现在可以识别并可以防止它们造成损坏。 CLR也使得非托管代码运行,但非托管代码不能从这些安全措施中受益。
特别许可证,并呼吁相关的强有力的安全策略,非托管代码,以确保这些权限都正确管理的能力。经过很长一段时间,非托管代码到托管代码的移植将减少非托管代码调用频率。
基于证据的安全机制的.NET Framework的Microsoft .NET框架组件引入了安全“基于证据的安全”的概念。从本质上说,它的安全策略暴露回答问题:·从组合哪个网站获取? .NET Framework是应用组件的组合。
他们组成了部署,版本控制,重用,激活范围,基本单位的安全认证。复合应用程序从网站下载到客户端。
·组合是从该URL获取?安全策略需要明确的地址,但该组合从这个地址下载。 ·组合是从哪个区获得的?区号是基于的安全标准,例如因特网,内联网,和本机等的位置,进行说明。
·强名称的组合(强名称)是什么?强名称提供了创作者的组合加强标识符密码。虽然它不提供创作者的任何证据,但它唯一地标识了组合,以确保该组合没有被破坏。
基于对这些问题的答案,和其他证据,安全策略可以被分配到规模计算许可证的适当组合。根据不同的源代码 - 可以从各种证据来源,包括CLR,浏览器,微软ASP.NET和住房获得。
使用代码时的证据组合被传输到内存的策略驱动的信任模型,通过收集证据的证据计算结合的政策环境,以确定哪些组合CLR策略系统给出许可。然后CLR策略系统管理的许可证请求下,一组允许的组合评估的证据,并进行组合。
只有联合组分别给予最低权限或没有权限创建者了解相结合,正确的组合。通过为特定的许可证的一个或多个请求,这样的附加要求可以转移室系统策略。
根据许可请求的类型,策略系统可以进一步限制许可证的组合管理(删除不必要的许可)或甚至合并拒绝到内存(如果你运行的最小允许组合没有给予必要的政策)。在没有任何许可请求的,该组合将永远不会被获准系统将给予更多的政策,请求仅进一步限制获得许可。
安全策略包含了大量包含给予基于证据的许可码组。许可码组描述可被提供给从安全区,通过签名或通过组合提供给特定发行者,等获得的特定组合。
虽然在CLR与代码组(以及相关的许可)的一组默认发行,但管理员可以CLR这些的安全设置,以满足其特定需求。请记住,通过定义证据相关的代码组,什么都可以,只要安全策略可以使用它作为证据提交。
创建许可过程涉及以确定代码组适用于什么水平的评估证据:企业,机器,和用户。为了上述策略,以评估这三个层次,然后创建一个交错三个级别的权限设置。
管理员可以任何政策层面标志着结束(终),应付停在战略进一步评估的其他牌号这样做。例如,管理员可以终止在机器级的策略的组合,这将防止用户级策略来应用的组合。
一旦政策完成后,初始设置许可证将创。
3.DES 加密算法是怎样的一种算法
数据加密算法DES
数据加密算法(Data Encryption Algorithm,DEA)的数据加密标准(Data Encryption Standard,DES)是规范的描述,它出自 IBM 的研究工作,并在 1997 年被美国政府正式采纳。它很可能是使用最广泛的秘钥系统,特别是在保护金融数据的安全中,最初开发的 DES 是嵌入硬 件中的。通常,自动取款机(Automated Teller Machine,ATM)都使用 DES。
DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环。
攻击 DES 的主要形式被称为蛮力的或彻底密钥搜索,即重复尝试各种密钥直到有一个符合为止。如果 DES 使用 56 位的密钥,则可能的密钥数量是 2 的 56 次方个。随着计算机系统能力的不断发展,DES 的安全性比它刚出现时会弱得多,然而从非关键性质的实际出发,仍可以认为它是足够的。不过 ,DES 现在仅用于旧系统的鉴定,而更多地选择新的加密标准 — 高级加密标准(Advanced Encryption Standard,AES)。
DES 的常见变体是三重 DES,使用 168 位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。如果三个 56 位的子元素都相同,则三重 DES 向后兼容 DES。
IBM 曾对 DES 拥有几年的专利权,但是在 1983 年已到期,并且处于公有范围中,允许在特定条件下可以免除专利使用费而使用。
4.DES算法分析
【关键词】DES 密钥1.引言:DES (全称Data Encryption Standard)是由IBM 公司开发的一种数据加密算法。
这种算法具有相当高的复杂性,使得破译过程需要花费相当大的时间和物力代价。DES 算法体制的安全性不是依赖于它算法的保密性,而是仅仅以其加密的密钥为基础,其算法是公开的,只需要保证密钥的安全就可以保证加密的数据很难被破解。
DES 加密的方法经济适用,应用范围很广,尤其是在金融等个人信息很重要的领域应用很广。当使用编程语言模拟DES 算法的时候入口参数有三个:Key, Data, Mode 。
Key 为64bit 密钥,Data 为64bit 数据,Mode 为加密过程或是解密过程。2.DES 算法的大致流程DES 算法大致分成这三个步骤:1.将加密过程中使用的密钥加以处理,使其变成16个子密钥。
2.将明文处理变成16 个且分成两部分的数据块。3.将子密钥和相对应的数据块进行一定的函数运算得到密文块,然后将密文块组合得到密文。
3.密钥的处理3.1 将密钥进行IP 变换。首先得到一个64 位的加密密钥进行如下的一个IP 变换57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26,18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52,44, 36,63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46,38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5,28, 20, 12, 4 其过程是将64 位的密钥1-64 个位置按照上表所表示的位置重新排列,即原密钥中第57 位的数据放到新排列的表的第1位,原密钥中的第49 位放到新排列的表的第2 位,其规律就是将原密钥中从第57 位数据开始依次将其后第8 位的数据顺序的放入新表中,重新排列的表如上表,注意排列完之后只有56 位,其中原密钥中的第8,16,24,32,40,48,56,64 位已经丢弃。
3.2 将已经进行了IP 变换之后得到的表进行分组,前28 位分为一组记为P[0],后28位记为Q[0],然后由P[0]、Q[0]开始按照P[i-1]左移和Q[i-1]左移来得到相应的P[i]、Q[i](i 从1 开始计算一直到16) 左移的位数如下循环左移表。按将照上表就可以一步一步得出P [i]、Q[i],将P[i]、Q[i]串联起来就可以得到一个56 位的数据M[i](M[1]-M[16]),将M[i]压缩到48位并如下进行换位14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32,得到48 位子密钥K[i](K[1]-K[16])。
4.明文的处理4.1 将明文进行换位变换。首先将明文的2 进制的数据分为64 位的数据块,将这个64位的数据块按照和密钥一样的IP 变换方式进行处理,但是明文的IP 换位表与密钥的IP 换位表不一样,明文的IP 如下:58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,其过程是将64位的明文块1-64 个位置按照上所表示的位置重新排列,即明文中第58 位数据放到新列表的第1 位,明文中的第50 位数据放到新列表的第2 位,其规律就是将明文中从第58 位数据开始依次将其后第8 位的数据顺序的放入新表中。
变换后将前32 位的数据记为L[0],后32 位数据记为R[0]。4.2F 函数。
F 函数是一个包含有扩展数据,压缩数据,数据替换,迭代等操作的一个运算集合,下面分步骤的介绍这个函数的运算过程:(1)扩展。首先对迭代后得32 位R[0]进行扩展变换成48 位数,记为G(R[0])。
当使用了后面的迭代运算得到R[i],使用同样的方法得到G(R[i])(i 从1 到16)扩展如下:32,1,2,3,4,5,4,5,6,7,8,9,8,9,10,11,12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21,22,23,24,25,24,25,26,27,28,29,28,29,30,31,32,1,同样上表中数字所表示的是32 位的R[i]中的数据的位数。将G(R[i-1])(48bit)与K[i](48bit)作异或运算,得到48 位数H[i],将48 位数顺序分成8 部分(6 位一块,8 个6 位数块)。
1-6 位为H[i](B[1]),7-12 位为H[i](B[2]),……43-48 位为H[i](B[8])。(2)替换。
在介绍替换过程之前,先介绍一个密箱,我们称为S 密箱,S 密箱由8 个密箱组成,分别为S[1]、S[2]……S[8],S 密箱的具体数据可在相关资料中查询。使用S [i](S密箱里的值)替换H[j](B[i])从i=1 开始。
S 密箱里的每一个值为一个4 位二进制数,所以每一个值表示的是一个0-15 之间的十进制数,而不是前面经常出现的表示的是位置的排列顺序。共8 个S 密箱。
替换规则如下:①取出B[i]的第1 位和第6 位连成一个2 位数m,m 就是S[i]中对应的行数(0-3)。②取出B[i]的第2 到第5 位连成一个4位数n,n 就是S[i]中对应的列数(0-15)。
用S 密箱里相应的S[i]里m 行n 列的那一个值来替换B[i],这样一个48 位的H[j]就变成了32 位。(3) 换位。
将得到的32 位数按照16,7,20,21,29,12,28,7,1,15,23,26,5,18,31,10,2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25 的位置进行变换。 5.总结DES 加密算法DES 算法是一种高效的数据加密方式。
只要保管好密钥,破解的方法目前基本就是穷举破解,但是穷举的方法破解DES 加密后的数据花费的代价非常高。据有关计算每秒计算一百万次的计算机, 它要穷举的时间为2285 年,所以这种算法还是比较安全的一种算法。
随着计算机运算速度的增加,我们可以采用多重DES 加密的方法来更加可靠的。
5.DES算法加密的算法步骤是
#define READFILESIZE 512
步骤:
1.从文件中读取READFILESIZE个字节的数据
2.,如果从文件中读出的数据少于READFILESIZE个,以0补足,然后根据用户指定的类型对这READFILESIZE个字节的数据进行操作.
3.判断文件是否结束,没有则执行步骤1
4.把加密后的文件实际长度添加到密文的末尾
5.结束
采用一次只从文件读取READFILESIZE个字节是在为了防止由于需要加密或解密的文件太大导致内存不够的情况出现。
6.分组加密算法
基于SOC的FPSLIC硬件实现分组加密算法1 引言: 美国Atmel公司生产的AT94K系列芯片是以Atmel 0.35 的5层金属CMOS工艺制造。
它基于SRAM的FPGA、高性能准外设的Atmel 8位RISC AVR单片机。另外器件中还包括扩展数据和程序SRAM及器件控制和管理逻辑。
图1-1是Atmel公司的FPSLIC内部结构图。 图1-1 FPSLIC内部结构图 AT94K内嵌AVR内核,Atmel公司的FPSLIC可编程SOC内嵌高性能和低功耗的8位AVR单片机,最多还带有36KB的SRAM,2个UART、1个双线串行接口,3个定时/计数器、1个8 8乘法器以及一个实时时钟。
通过采用单周期指令,运算速度高达1MPS/MHz,这样用户可以充分优化系统功耗和处理速度。AVR内核基于增强型RISC结构,拥有丰富的指令系统以及32个通用工作寄存器。
而且所有通用寄存器都与算术逻辑单元ALU相连;另外,在一个时钟周期内,执行单条指令时允许存取2个独立的寄存器,这种结构使得代码效率更高,并且在相同的时钟频率下,可以获得比传统的CISC微处理器高10倍的数据吞吐量。AVR从片内SRAM执行程序,由于AVR运行代码存储在SRAM中,因此它可以提供比较大的吞吐量,这样可以使其工作在突发模式上。
在这种模式上,AVR大多时间都是处于低功耗待机状态,并能在很短的时间里进行高性能的处理。微处理器在突发模式运行模式下的平均功耗要比长时间低频率运行时的功耗低得多。
FPSLIC的待机电流小于100 ,典型的工作电流为2-3mA/MHz。在系统上电时,FPGA配置SRAM和AVR程序SRAM都能自动地通过Atmel在系统可编程串行存贮器AT17来装载。
2 FPSLIC硬件的设计实现: 2.1 硬件实现框图 图2-1系统硬件实现框图 图2-1是为了实现加密算法的硬件框图。计算机通过它的串口和FPSLIC的通信端口UART0相连,用来进行数据的传送和接收。
FPSLIC通过AVR的通信端口等待接收主机传来的信息,通过内部的下载程序将数据进行处理,最后再传回到主机上。图2-1中FPGA是一个计数器,此计数器一上电就从0计数,并用进位输出信号产生一个AVR中断,即进位输出信号RCO连接到AVR的中断信号INTA0。
当AVR接收到由计数器的进位信号产生的中断时,则执行INTA0的中断服务程序(ISR)。在此期间,AVR就给INTA0产生的次数计数,并把它放到8位的AVR-FPGA数据总线上,这时就会触发AVR的写使能信号(FPGA的aWE信号端)和FPGA的I/O SELECT0信号(FPGA的LOAD信号端),同时从AVR——FPGA数据总线上将数据载入计数器。
数码管的各极连接在实验板上的可编程端口,通过引脚配置用来显示数据。LED指示灯在AVR I/O输出的D口,直接将数据通过命令PORTD来显示。
FPGA的时钟通过GCLK5选自AVR单片机的时钟。我们以DES数据加密为例,由仿真试验可以得出DES加密的速率为57.024 kbit/s,它大于串口的最大速率19.2kbit/s,因此可以实时进行数据的加密操作。
一个典型的FPSLIC设计通常应该包括以下几个步骤: 1. 利用联合仿真软件建立一个FPSLIC工程。 2. 预先建立一个AVR软件仿真程序文件。
3. 预先建立一个FPGA的硬件仿真程序文件。 4. 设置和运行AVR-FPGA接口设计。
5. 运行布局前的联合仿真Pre-layout Converification(这一步是可选择的)。 6. 运行Figaro-IDS进行FPGA的布局布线。
7. 运行布局后的联合仿真Pos-layout Converification(这一步是可选择的)。 8. 器件编程数据下载与实验验证。
我们以DES数据加密为例,(新建的工程名为lab1.apj,AVR仿真程序文件为desjiami.asm,FPGA的硬件仿真程序为Count.vhdl)。 2.2 编译AVR的仿真程序软件 (以上程序代码是整个仿真的程序框架,最主要的是对接口进行初始化和对发送和接收部分进行设置,以便进行串口的通信) 2.3器件编程与试验验证 1. 将下载电缆ATDH2225的25针的一端从计算机的并行口接出,令一端10针扁平线插入ATSTK94实验板的J1插头上。
下载电缆的标有红色的线和J1插头的第一脚连接。 2. 因为要和计算机串口进行通信,因此要制作一个串口连接电缆,其九针连接电缆的连接关系如下图2-2。
电缆一端连接在计算机的任意串口上,另一端连接在实验板上的UART0上。连接电缆只需要连接三根线,UART0的2端连接在FPSLIC的发送端,因此它和计算机的串口2端(接收数据端)相连。
UART0的3端连接在FPSLIC的接收端,因此它和计算机的串口2端(发送数据端)相连。  ; 图2-2 串口通信连接指示图 3. 选择4MHz时钟,即在实验板上将JP17设置在靠近板子内侧位置,而将JP18不连接,也就是将其连接跳线拔掉。
4. 将直流9V电源接头插入ATSTK94实验板的电源插座P3上。 5. 将实验板上的开关SW10调至PROG位置。
开关SW10有编程(PROG)和运行(RUN)两种连接。在编程位置,用户可以通过下载电缆和下载程序软件CPS,将System Designer生成的FPSLIC数据流文件给配置存储器编程。
在运行位置,FPSLIC器件将载入数据流文件并运行该设计。 6. 打开电源开关SW14,即将它调整到ON位置。
这时候实验板上电源发光二极管(红色)发光,表示实验板上已。
转载请注明出处众文网 » 毕业论文des加密算法