C语言实现的DES算法详解与源码分享

版权申诉
0 下载量 187 浏览量 更新于2024-10-08 收藏 4KB RAR 举报
资源摘要信息:"des.rar_des 详解" 知识点一:DES算法概述 DES(Data Encryption Standard)算法是一种对称密钥加密块密码,其设计旨在用于加密和解密数字数据。该算法于1977年被美国国家标准局采纳为联邦信息处理标准(FIPS PUB 46),成为广泛使用的加密标准之一。DES算法使用固定长度为64位的密钥,其中实际上只有56位是用于加密的,剩下的8位作为奇偶校验位。 知识点二:DES算法的加密过程 DES算法通过以下步骤对数据进行加密: 1. 初始置换(Initial Permutation, IP):对明文进行初始置换。 2. 分割:将初始置换后的数据分为左右两部分(各32位)。 3. 16轮迭代:在每一轮中,左半部分经过扩展置换、与密钥进行异或、S盒替代和P盒置换等操作,然后与右半部分进行异或。 4. 合并:经过最后一轮迭代后,左右两部分交换位置,然后进行最终置换(Final Permutation, FP)。 5. 输出:得到64位的密文。 知识点三:DES算法的解密过程 DES算法的解密过程与加密过程相似,但使用的轮密钥顺序与加密时相反。通过以下步骤对密文进行解密: 1. 初始置换(IP):对密文进行初始置换。 2. 分割:将初始置换后的数据分为左右两部分(各32位)。 3. 16轮迭代:在每一轮中,左半部分经过扩展置换、与轮密钥进行异或、S盒替代和P盒置换等操作,然后与右半部分进行异或。 4. 合并:经过最后一轮迭代后,左右两部分交换位置,然后进行最终置换(FP)。 5. 输出:得到64位的原始明文。 知识点四:C语言实现DES算法 在C语言中实现DES算法,需要遵循DES算法的加密和解密流程,实现上述描述的各个步骤。通常需要以下步骤: 1. 将64位密钥分成8个8位的子密钥,然后进行PC-1置换,产生56位的密钥,用于加密。 2. 对每个子密钥进行左移和PC-2置换,生成16个48位的轮密钥。 3. 实现初始置换(IP)、扩展置换、S盒替代、P盒置换等操作。 4. 编写用于加密和解密的函数,确保每一步都与DES标准相符。 5. 对输入的数据进行按位操作,包括置换、异或、移位等。 6. 对输出结果进行验证,确保加解密功能正确。 知识点五:DES算法的局限性与替代 随着计算机性能的提高和密码分析技术的发展,DES算法逐渐显现出安全性不足的问题。特别是在1999年,DES算法在不到24小时被破解,显示出了其脆弱性。因此,后续提出了改进的算法,如3DES(Triple DES)和AES(Advanced Encryption Standard)。3DES在DES的基础上通过使用三个不同的密钥进行三次加密,提高了安全性。AES是目前广泛使用的加密标准,其加密过程更为复杂,密钥长度可选择128、192或256位,提供了更高的安全级别。 通过以上知识点,可以了解到DES算法的核心原理、实现方式以及在实际应用中的一些问题。对于学习加密技术、网络安全和信息安全的人员来说,理解和掌握DES算法是非常重要的基础。同时,了解其不足之处和替代算法的发展也是推动学习深入的重要方面。

fieldList: this.$refs.tabTable.$refs.field ? this.$refs.tabTable.$refs.field[0].tableData : this.tableDataField || [], // 字段列表 conditionList: this.$refs.tabTable.$refs.sql ? this.$refs.tabTable.$refs.sql[0].tableData : this.tableDataSql || [], // 过滤条件 sequenceList: this.$refs.tabTable.$refs.sort ? this.$refs.tabTable.$refs.sort[0].tableData : this.tableDataSort || [], // 字段排序 queryList: this.$refs.tabTable.$refs.filter ? this.$refs.tabTable.$refs.filter[0].tableData : this.tableDataFilter || [], // 查询区 view_order: this.viewOrder, // 视图顺序 module_id: this.addEditParams.module_id, // 功能id status_id: this.addEditParams.status_id, // 状态id table_name: this.addEditParams.table_name, // 表名 bill_type_id: this.addEditParams.bill_type_id, // 单据类型id des_id: this.addEditParams.des_id ? this.addEditParams.des_id : '', // 视图模板id des_alias: this.addEditParams.des_alias ? this.addEditParams.des_alias : '', // 视图别名 resource_code: this.addEditParams.resource_code ? this.addEditParams.resource_code : '', // 资源编码 page_num: this.addEditParams.page_num ? this.addEditParams.page_num : 0, // 每页条数 is_subtotal: this.addEditParams.is_subtotal ? this.addEditParams.is_subtotal : 0, // 是否小计 }; objSub.fieldList.forEach((it) => { it.is_format = it.is_format ? 1 : 0; it.is_visible = it.is_visible ? 1 : 0; it.is_total_items = it.is_total_items ? 1 : 0; it.is_primary = it.is_primary ? 1 : 0; return it; }); 优化以上代码

2023-07-14 上传

优化这条sql 解决bug select a.*,rownum num from ( SELECT t.PROJ_ID,t.PROJ_CODE,t.PROJ_NAME,t.CLIENT_CODE,t.CLIENT_NAME,t.SPEC_CODE,t.SPEC_NAME,t.BUS_UNIT_CODE,t.BUS_UNIT,t.PROJ_DEP_CODE,t.PROJ_DEP,t.PROJECT_MANAGER_CODE,t.PROJECT_MANAGER,t.PROJECT_DEP_MANAGER_CODE,t.PROJECT_DEP_MANAGER,t.IS_SUB_PROJ,t.SUB_PROJ_TYPE_CODE,t.SUB_PROJ_TYPE,t.PARENT_CODE,t.PROJ_GROSS,t.CLIENT_AREA_CODE,t.CLIENT_AREA,t.CLIENT_TYPE_FULL_PATH_CODE,t.CLIENT_TYPE_PULL_PATH,t.BUSINESS_TYPE_CODE,t.BUSINESS_TYPE,t.BUSINESS_LEVEL_CODE,t.BUSINESS_LEVEL,t.BUSINESS_AREA_CODE,t.BUSINESS_AREA_NAME,t.IS_CLOSE,t.IS_IN_COO,t.TAX_RATE,t.IS_AUTHORIZED,t.AUTHORIZED_AMOUNT,t.IS_VIRTUAL,t.INCOME_BUDGET,t.EXPENDITURE_BUDGET,t.P_VALUE,t.CREATE_TIME,t.P_BUD_VALUE,t.P1_BUD_VALUE,t.P2_BUD_VALUE,t.ORG_CODE,t.ORG_NAME,t.PROD_RES_TYPE,t.IS_TECH_COO,t.COO_UNIT_RATIO,t.PROJ_ACHIEVEMENTS_BUD,t.REIMBURSEMENT_COST_BUD,t.COO_COST_BUD,t.MATERIAL_COST_BUD,t.PERFORMANCE_PERCENT,t.SCHE_START_TIME,t.SCHE_END_TIME,t.PROJECT_ACCOUNT_CODE,t.CUSTOMER_TYPE_CODE,t.CUSTOMER_TYPE,t.IS_PURE_OUT_PROJ,t.PROJECT_CREATE_TIME,t.IS_RELATE,t.IS_QUOTA,t.MAIN_PROJECT_CODE,t.PROJ_STATUS,t.IS_LARGE_PROJECT,t.MARKET_DIS_COUNT_RATE,t.PROJECT_CAT,t.MGR_PER_FORMANCE_RATIO,t.P1_VALUE,t.S_VALUE,t.COOP_VALUE,t.H_VALUE,t.DEVICE_BUDGET_COST,t.SUR_FEE_DIS_COUNT_RATE,t.DES_FEE_DIS_COUNT_RATE, (select listagg(p.coo_unit_code, ',') within group(order by p.coo_unit_code) from ( select distinct coo_unit_code from t_spdi_proj where is_sub_proj = 'Y' and sub_proj_type_code = 'wbhz' and PROJ_STATUS != 'P_5' AND PROJ_STATUS != 'P_4' and parent_code = t.proj_code )p ) coo_unit_code, (select listagg(to_char(p.coo_unit), ',') within group(order by p.coo_unit) from ( select distinct coo_unit from t_spdi_proj where is_sub_proj = 'Y' and sub_proj_type_code = 'wbhz' and PROJ_STATUS != 'P_5' AND PROJ_STATUS != 'P_4' and parent_code = t.proj_code )p ) coo_unit from T_SPDI_PROJ t where t.PROJ_STATUS NOT IN ('E','H','W') order by t.proj_id )a

2023-06-01 上传