• [field:title/]
  • [field:title/]

您现在的位置: > 行业杂谈 > 基于服务器安全的DES加密算法实现

基于服务器安全的DES加密算法实现

作者:木木 文章来源:原创  点击量: 发布日期:2017-04-26

  基于服务器安全的DES加密算法实现

  服务器的安全,对于每一个服务器商都是非常重视的一个大的方面,对于新世界的香港vps及香港服务器来说,也是不例外的。

  金融信息安全是国家信息安全的重要组成部分,密码技术是金融信息安全的技术核心。由于作为专业的信息安全服务商,推出加密服务器,积极支持和响应国家各部委的相关要求。对于这种加密服务器的主要功能有配置管理功能、密钥管理功能及密码服务功能等等。

  这种加密服务器为现代服务业的商用市场提供非常关键作用,在安全的金融支付与电子交易业务,可以说没有这种加密服务器的安全保证的话,就没有今天的支付宝支付、微信支付的存在。(1)在金融行业:为银行、证券及保险这几个产业直接提供资金往来,结算等等各种服务过程中的重要数据加解密、签名验签、身份认证等等安全需求。(2)互联网行业:互联网产业的支付场景,密码设备支撑线上支付过程中的数据安全保护。(3)公共行业:交通、公安、社保、住房、卫生等等这些地方的办卡与交易环节需要安全支撑。

  下面介绍服务器数据安全的DES密码算法背景意义与加密原理。

  DES密码算法是于1976年11月被美国政府采用,随后被美国国家标准局和美国国家标准协议(ANSI)承认,1977年1月以数据加密标准DES(Data Encryption Standard)的名称正式向社会公布。但这算法的实现意义与算法结构是非常有意义。

  DES算法明文长度输入是64bits,密钥长度输入是64bits。DES算法是一种高度对称算法,就是所谓的算法加密与解密相似,其解密过程仅为加密过程的逆运算,因此,小编只讨论DES算法的加密模式。

  DES加密算法是将输入64 bits的明文块变为输出64 bits的密文块。使用的密钥是64位,其中有8bits是进行奇偶校验,从而有效密钥长度为56bits。DES的整体结构采用16轮Feistel模型(是一种算法结构模型)。待加密的64位明文数据首先进行初始变换IP,然后将置换后的64位数据分为左半部分L0和右半部分R0各32bits,接着进行16轮迭代。在每一轮中,右半部分在48 bits子密钥k的作用下进行F函数变换,得到的32 bits数据与左半部分按bit异或,产生的32位数据作为下一轮迭代的右半部分,原右半部分直接作为下一轮的左半部分,但第16轮(最后一轮)不进行左右互换。R16和L16为第16轮迭代后输出的左半部分和右半部分,最后对64 bits的(R16,L16)进行初始逆置换IP-1,所得结果即为密文。

  初始置换IP只是按照特定的置换表对64 bits明文数据的结构做了初步的调整;初始逆置换IP-1是初始置换的逆运算,是对16轮迭代后的结果按照特定的置换表进行移位运算。F函数是DES算法的核心,在DES算法当中由如下步骤:(1)扩展变换E的作用是将输入的32 bits数据扩展为48 bits,具体扩展方法是首先将32 bits数据分成8个4 bits块,然后将每个4 bits块扩展成6 bits块。(2)S盒是将48 bits输入转化为32 bits数据输出,S盒共有8个,每个S盒都是将6 bits输入转化为4 bits输出。(3)P盒是在特定的置换表下将S盒输出的32 bits数据移位变换后作为F函数的最终结果输出。

  子密钥生成算法生成每轮需要子密钥,子密钥生成算法生成过程包含置换PC-1、循环左移和PC-2运算操作。

  DES算法的伪代码描述如下:

  class DES_ALG

  {

  public:

  //执行des算法加密或解密的入口函数//

  int DesEnter(const BYTE* Data_in,BYTE*Data_out,int datalen,const BYTE key[8],int Mode);

  //数据校验//

  int DesMac(const BYTE* mac_data,BYTE*mac_code,int datalen,const BYTE key[8]);

  private:

  //对输入的2个数据进行异或运算//

  viod XOR(const BYTE Data_in1[8],const BYTE Data_in2[8],BYTE out[8]);

  //创建子密钥函数(16个)

  viod CreSubKey(const BYTE OldKey[8],BYTENew_Subkey[16][8]);

  //创建加密函数

  viod Enc_DES(const BYTE IData_bit[8],constBYTE key_bit[8],BYTE Odata_bit[8]);

  //创建解密函数,与加密函数相反,迭代顺序从16到1

  viod Dec_DES(const BYTE IData_bit[8],constBYTE Key_bit[8],BYTE OData_bit[8]);

  //将64字节的01代码转换成对应的8个字节的数据

  BYTE*Bin_ASC(const BYTE abyte[64],BYTE bit[8]);

  //将8个字节的数据转换成对应的64字节的01代码

  BYTE*ASC_Bin(const BYTE bit[8],BYTE abyte[64]);

  }

  基于服务器安全的DES加密算法实现已经给大家讲清楚了。如果您还有什么不明确或不懂的地方,欢迎咨询新世界主机了解,详细请咨询QQ: ,TEL: ;我们将竭诚为您服务。

本文地址: http://xgvps.com/xingyezatan/427.htm
版权所有*转载时必须以链接形式注明作者和原始出处

网站首页|关于我们|诚聘英才|合作伙伴|法律申明|诚招代理|联系我们|网站xml地图

Copyright © 2001-2020 香港vps 网址:http://xgvps.com/

香港vps、香港服务器、香港vps主机、香港vps哪里好、就到香港新世界vps主机。

信息来源于网络以及网友投稿,如侵犯了您的权益,请及时通知本站。 

收缩
p