请输入您要查询的百科知识:

 

词条 DES
释义

§ 基本简介

DES

DES算法全称为Data Encryption Standard,即数据加密算法,它是IBM公司于1975年研究成功并公开发表的。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种:加密或解密。

数据加密算法(Data Encryption Algorithm,DEA)的数据加密标准(Data Encryption Standard,DES)是规范的描述,它出自IBM 的研究工作,并在 1977 年被美国政府正式采纳。它很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的 DES 是嵌入硬 件中的。通常,自动取款机(Automated Teller Machine,ATM)都使用 DES。

DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。

§ 内容

DES

A 卖方义务

B 买方义务

A1 提供符合合同规定的货物

卖方必须提供符合销售合同规定的货物和商业发票或有同等作用的电子信息,以及合同可能要求的、证明货物符合合同规定的其他凭证。

B1 支付价款

买方必须按照销售合同规定支付价款。

A2 许可证、其他许可和手续

卖方必须自担风险和费用,取得任何出口许可证或其他官方许可或其他必要文件,并在需要办理海关手续时办理货物出口和从他国过境所需的一切海关手续。

B2 许可证、其他许可和手续

买方必须自担风险和费用,取得任何进口许可证或其他官方许可,并在需要办理海关手续时办理货物进口所需的一切海关手续。

A3 运输合同与保险合同

a)运输合同

卖方必须自付费用订立运输合同,将货物运至指定目的港的指定的点。如未约定或按照惯例也无法确定具体交货点,则卖方可在指定的目的港选择最适合其目的的交货点。

b)保险合同:无义务。

B3 运输合同和保险合同

a)运输合同:无义务。

b)保险合同:无义务。

A4 交货

卖方必须在约定的日期或期限内,在指定的目的港按照A3a)指定的卸货点,将货物于船上交给买方处置,以便货物能够由适合该项货物特点的卸货设备从船上卸下。

B4 受领货物

买方必须在卖方按照A4规定交货时受领货物。

A5 风险转移

除B5规定者外,卖方必须承担货物灭失或损坏的一切风险,直至已经按照A4规定交货为止。

B5 风险转移

买方必须承担按照A4规定交货之时起货物灭失或损坏的一切风险。

如买方未按照B7规定通知卖方,则必须自约定的交货日期或交货期限届满之日起,承担货物灭失或损坏的一切风险,但以该项货物已正式划归合同项下,即清楚地划出或以其他方式确定为合同项下之货物为限。

A6 费用划分

除B6规定者外,卖方必须支付按照A3a)规定发生的费用,以及按照A4规定交货前与货物有关的一切费用;及在需要办理海关手续时,货物出口需要办理的海关手续费用及货物出口时应交纳的一切关税、税款和其他费用,以及按照A4规定交货前从他国过境的费用。

B6 费用划分

买方必须支付自按照A4规定交货之时起与货物有关的一切费用,包括为受领货物所需要的货物从船上卸下的卸货费;及如货物按照A4规定交给买方处置而未受领货物,或未按照B7规定通知卖方,由此而发生的一切额外费用,但以该项货物已正式划归合同项下,即清楚地划出或以其他方式确定为合同项下之货物为限;及在需要办理海关手续时,货物进口所需办理的海关手续费用及应交纳的一切关税、税款和其他费用。

A7 通知买方

卖方必须给予买方有关按照A4规定指定的船只预期到达时间的充分通知,以及要求的任何其他通知,以便买方能够为受领货物而采取通常必要的措施。

B7 通知卖方

一旦买方有权决定在约定期限内的时间和/或在指定的目地港受领货物的点,买方必须就此给予卖方充分通知。

A8 交货凭证、运输单据或有同等作用的电子讯息

卖方必须自付费用向买方提供提货单和/或通常运输单据(如可转让提单、不可转让海运单、内河运输单据或多式联运单据)以使买方得以在目的港从承运人处受领货物。如买卖双方约定以电子方式通讯,则前项所述单据可以由具有同等作用的电子数据交换(EDI)讯息代替。

B8 交货凭证、运输单据或有同等作用的电子讯息

买方必须接受按照A8规定提供的提货单或运输单据。

A9 查对、包装、标记

卖方必须支付为按照A4规定交货所需进行的查对费用(如核对货物品质、丈量、过磅、点数的费用)。

卖方必须自付费用提供为交付货物所要求的包装(除非按照相关行业惯例,合同所指货物无需包装即可交货)。包装应作适当标记。

B9 货物检验

买方必须支付任何装运前检验的费用,但出口国有关当局强制进行的检验除外。

A10 其他义务

应买方要求并由其承担风险和费用,卖方必须给予买方一切协助,以帮助买方取得由装运地国和/或原产地国所签发或传送的、为买方进口货物可能要求的任何单据或有同等作用的电子讯息(A8所列的除外)。

应买方要求,卖方必须向买方提供投保所需的信息。

B10 其他义务

买方必须支付因获取A10所述单据或有同等作用的电子讯息所发生的一切费用,并偿付卖方因给予协助而发生的费用。[1]

§ 主要形式

DES

攻击 DES 的主要形式被称为蛮力的或彻底密钥搜索,即重复尝试各种密钥直到有一个符合为止。如果 DES 使用 56 位的密钥,则可能的密钥数量是 2 的 56 次方个。随着计算机系统能力的不断发展,DES 的安全性比它刚出现时会弱得多,然而从非关键性质的实际出发,仍可以认为它是足够的。不过 ,DES 现在仅用于旧系统的鉴定,而更多地选择新的加密标准 — 高级加密标准(Advanced Encryption Standard,AES)。

DES 的常见变体是三重 DES,使用 168 位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。如果三个 56 位的子元素都相同,则三重 DES 向后兼容 DES。

IBM 曾对 DES 拥有几年的专利权,但是在 1983 年已到期,并且处于公有范围中,允许在特定条件下可以免除专利使用费而使用。

由于DES是加(解)密64位明(密)文,即为8个字节(8*8=64),可以据此初步判断这是分组加密,加密的过程中会有16次循环与密钥置换过程,据此可以判断有可能是用到DES密码算法,更精确的判断还得必须懂得一点DES的加密过程。

§ 主要步骤

1初始置换

其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长3 2位,其置换规则为将输入的第58位换到第一位,第50位换到第2位……依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3……D64,则经过初始置换后的结果为:L0=D58D50……D8;R0=D57D49……D7。

2逆置换

经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。

DES 作为贸易术语是意思是指卖方将货物运至指定的目的港,并在船上交易.按此术语成交,买卖双方责任、费用和风险的划分,以目的港船上办理交接手续为界。卖方承担在目的港船上将货交由买方处置以前的一切费用和风险,并按合同规定支付货款。

§ 具体表现

1、交货地点不同,即CIF是装运港船上交货,而DES是目的港船上交货。

2、风险划分不同,即在CIF条件下,运输途中的风险由买方承担,而在DES条件下,运输途中的风险则由卖方承担。

3、交货方式不同,即CIF属象征性交货,而DES属实际交货。

4、费用负担不同,即CIF条件下,卖方只负担正常的运费和约定的保险费,而在DES条件下,卖付则须负担货物运抵目的港交货前的一切费用,其中包括额外费用。

DES术语,只能适用于海运和内河航运。 此算法是对称加密算法体系中的代表,在计算机网络系统中广泛使用.

§ 安全性

一.安全性比较高的一种算法,目前只有一种方法可以破解该算法,那就是穷举法.

二.采用64位密钥技术,实际只有56位有效,8位用来校验的,譬如,有这样的一台PC机器,它能每秒计算一百万次,那么256位空间它要穷举的时间为2285年,所以这种算法还是比较安全的一种算法.

TripleDES。该算法被用来解决使用 DES 技术的 56 位时密钥日益减弱的强度,其方法是:使用两个独立密钥对明文运行 DES 算法三次,从而得到 112 位有效密钥强度。TripleDES 有时称为 DESede(表示加密、解密和加密这三个阶段)。

§ 保护Java源代码

DES加密流程图

DES(Data Encryption Standard)是发明最早的最广泛使用的分组对称加密算法。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。

DES算法工作流程如下:若Mode为加密模式,则利用Key 对数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密模式,则利用Key对密码形式的数据Data进行解密,还原为Data的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据在公共通信网中传输的安全性和可靠性。

也可以通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性。

利用DES算法加密的步骤

(1)生成一个安全密钥。在加密或解密任何数据之前需要有一个密钥。密钥是随同被加密的应用程序一起发布的一段数据,密钥代码如下所示。

生成一个密钥代码

// 生成一个可信任的随机数源

Secure Random sr = new SecureRandom();

// 为我们选择的DES算法生成一个KeyGenerator对象

KeyGenerator kg = KeyGenerator.getInstance ("DES" );

Kg.init (sr);

// 生成密钥

Secret Key key = kg.generateKey();

// 将密钥数据保存为文件供以后使用,其中key Filename为保存的文件名

Util.writeFile (key Filename, key.getEncoded () );

(2)加密数据。得到密钥之后,接下来就可以用它加密数据。如下所示。

用密钥加密原始数据

// 产生一个可信任的随机数源

SecureRandom sr = new SecureRandom();

//从密钥文件key Filename中得到密钥数据

Byte rawKeyData [] = Util.readFile (key Filename);

// 从原始密钥数据创建DESKeySpec对象

DESKeySpec dks = new DESKeySpec (rawKeyData);

// 创建一个密钥工厂,然后用它把DESKeySpec转换成Secret Key对象

SecretKeyFactory key Factory = SecretKeyFactory.getInstance("DES" );

Secret Key key = keyFactory.generateSecret( dks );

// Cipher对象实际完成加密操作

Cipher cipher = Cipher.getInstance( "DES" );

// 用密钥初始化Cipher对象

cipher.init( Cipher.ENCRYPT_MODE, key, sr );

// 通过读类文件获取需要加密的数据

Byte data [] = Util.readFile (filename);

// 执行加密操作

Byte encryptedClassData [] = cipher.doFinal(data );

// 保存加密后的文件,覆盖原有的类文件。

Util.writeFile( filename, encryptedClassData );

(3)解密数据。运行经过加密的程序时,ClassLoader分析并解密类文件。操作步骤如下所示。

用密钥解密数据

// 生成一个可信任的随机数源

SecureRandom sr = new SecureRandom();

// 从密钥文件中获取原始密钥数据

Byte rawKeyData[] = Util.readFile( keyFilename );

// 创建一个DESKeySpec对象

DESKeySpec dks = new DESKeySpec (rawKeyData);

// 创建一个密钥工厂,然后用它把DESKeySpec对象转换成Secret Key对象

SecretKeyFactory key Factory = SecretKeyFactory.getInstance( "DES" );

SecretKey key = keyFactory.generateSecret( dks );

// Cipher对象实际完成解密操作

Cipher cipher = Cipher.getInstance( "DES" );

// 用密钥初始化Cipher对象

Cipher.init( Cipher.DECRYPT_MODE, key, sr );

// 获得经过加密的数据

Byte encrypted Data [] = Util.readFile (Filename);

//执行解密操作

Byte decryptedData [] = cipher.doFinal( encryptedData );

// 然后将解密后的数据转化成原来的类文件。

将上述代码与自定义的类装载器结合就可以做到边解密边运行,从而起到保护源代码的作用。 [2]

随便看

 

百科全书收录594082条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/19 6:15:14