C语言中如何避免弱加密

1、弱加密

加密指以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。常见的加密算法主要可分为:对称加密、非对称加密、单向加密。各类加密算法的使用场景不同,根据加密算法的特性如运算速度、安全性、密钥管理方式来选择合适的算法,但安全性是衡量加密算法优劣的一个重要指标,容易被破解的加密算法被称为弱加密算法,例如可以使用穷举法在有限的时间内破解DES算法。本篇文章以JAVA语言源代码为例,分析弱加密产生的原因以及修复方法。

2、 弱加密的危害

对于抗攻击性弱的加密算法,一旦被利用会造成个人隐私信息泄漏甚至财产损失。从2018年1月至2019年4月,CVE中共有2条漏洞信息与其相关。漏洞信息如下:

CVE 漏洞概况
CVE-2018-9028 CA Privileged AccessManager 2.x中传输密码时使用弱加密,降低了密码破解的复杂性。
CVE-2018-6619 在 Easy Hosting Control Panel(EHCP)v0.37.12.b通过利用无盐的弱加密算法,使攻击者更容易破解数据库密码。

3、示例代码

下面使用示例代码来源于Benchmark (https://www.owasp.org/index.php/Benchmark),源文件名:BenchmarkTest00019.java。

3.1缺陷代码

C语言中如何避免弱加密

上述示例代码操作是读取请求中的内容并将其加密处理,在第49行获取读取配置文件的实例 benchmarkprops。在第50行加载配置文件,在第52行~53行读取配置文件中的属性 cryptoAlg1,若无此属性默认使用 DESede/ECB/PKCS5Paddingalgorithm 赋值。第54行将使用 algorithm 作为加密算法构造加密对象c。接下来准备加密的密码。第57~58行实例化了一个DES加密算法的密钥生成器。第59行指定加密对象 c 的操作模式为加密,其中 key 为密钥。第62行~76行对将请求中的输入流转换为字节数组input,在第77行进行对 input 进行加密,加密结果是字节数组 result 。其中使用 DES 算法生成的密钥短,仅有56位,运算速度较慢,而且DES算法完全依赖密钥,易受穷举搜索法攻击。

使用代码卫士对上述示例代码进行检测,可以检出“弱加密”缺陷,显示等级为中。在代码行第57行报出缺陷,如图1所示:

C语言中如何避免弱加密

图1:弱加密的检测示例

3.2 修复代码

C语言中如何避免弱加密

在上述修复代码中,第58行使用AES算法替代DES算法,AES最少可生成128位,较高256位的密钥,且运算速度快,占用内存低。

使用代码卫士对修复后的代码进行检测,可以看到已不存在“弱加密”缺陷。如图2:

C语言中如何避免弱加密

图2:修复后检测结果

4、 如何避免弱加密

安全性要求较高的系统中,建议应使用安全的加密算法(如AES、RSA)对敏感数据进行加密。

关于C语言中如何避免弱加密就分享到这里啦,希望上述内容能够让大家有所提升。如果想要学习更多知识,请大家多多留意小编的更新。谢谢大家关注一下亿速云网站!

文章标题:C语言中如何避免弱加密,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/27042

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月19日 下午11:54
下一篇 2022年9月19日 下午11:55

相关推荐

  • line是属于哪个国家的聊天软件

    line是“日本”的聊天软件。LINE是日本公司NHN Japan于2011年推出的一款即时通讯软件;LINE对用户吸引力最大的是聊天表情贴图,超过250种的表情贴图让用户在使用Line时多了一个有趣的心情传达工具,其中line官方设计可爱且特色鲜明的馒头人、可妮兔、布朗熊和詹姆士饱受好评,也让四个…

    2022年9月16日
    1.6K00
  • word页码怎么设置

    word页码设置教程: 1、打开需要设置的文档。 2、在工具栏中找到插入的功能。 2、插入功能中有页码功能,点击即可。 3、选择页码的出现位置。 4、选择页面的样式。 5、效果如图。 感谢各位的阅读,以上就是“word页码怎么设置”的内容了,经过本文的学习后,相信大家对word页码怎么设置这一问题有…

    2022年9月19日
    41400
  • replace如何替换变量数据

    在php中,“preg_replace”函数可以执行一个正则表达式的搜索和替换来替换变量数据,语法为“preg_replace(规定搜索的模式,用于替换的字符串或字符串数组,要搜索替换的目标字符串或字符串数组,字符串的最大可替换次数,替换执行的次数)”;若subject是一个数组则返回的结果是一个数…

    2022年6月27日
    61800
  • windows驱动精灵ahci驱动怎么安装

    驱动精灵ahci驱动: 答:驱动精灵是无法安装ahci驱动的。 在硬盘IDE模式下是无法发现achi驱动的,所以无法安装。 而改成ata模式也会造成蓝屏。 ahci驱动安装方法: 1、按下“win+r”打开运行,输入 regedit。 2、依次打开 HKEY_LOCAL_MAHCINESystemC…

    2022年9月10日
    90900
  • MySQL中脑裂指的是什么

    在MySQL中,脑裂是指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏。 对于无状态服务的HA系统,无所谓脑裂不脑裂;但对有状态服务(比如MySQL)的HA,必须要严格防止脑裂。 本教程操…

    2022年9月18日
    1.7K00
  • mysql中sum()函数如何用

    在mysql中,sum()函数用于计算一组值或表达式的总和,语法为“SUM(DISTINCT expression)”,DISTINCT运算符允许计算集合中的不同值。sum()函数需要配合SELECT语句一起使用,如果在没有返回匹配行SELECT语句中使用SUM()函数,则SUM()函数会返回NUL…

    2022年9月26日
    1.6K00
  • 怎样进行AppleJeus行动分析

    Lazarus组织是目前最活跃的APT组织之一。 2018年,卡巴斯基针发现由该组织发起的名为AppleJeus的攻击行动。该行动是Lazarus首次针对macOS用户的攻击,为了攻击macOS用户,Lazarus开发了macOS恶意软件并添加身份验证机制,其可以非常仔细谨慎的下载后一阶段的有效负载…

    2022年9月16日
    60000
  • 怎么用SVG给favicon添加标识

    一、favicon 的获取方式 想知道获取方式,可以先了解设置方式。 一般有两种方式可以设置网站的 favicon。 名列前茅种,通过 link 标签设置(需要rel=”icon”属性) <link rel=”icon” href=”xxx.png”> 第二种,直接在网站根目录放一张fa…

    2022年9月8日
    73600
  • 如何解决1045无法登录mysql服务器

    解决方法:1、找到“my.ini”系统配置文件,把“skip-grant-tables”放在“port=****”下面;2、如果放在C盘里,那么需要编辑权限,并保存修改;3、打开MySQL数据库之前先重启服务,打开cmd命令提示符,直接输入mysql,回车打开MySQL数据库即可。 本教程操作环境:…

    2022年9月6日
    85600
  • Java设计模式之装饰模式是什么及怎么实现

    1.什么是装饰模式 当我们想要改进或增强某个对象的功能,而又不想继承该类创建子类,可以考虑使用装饰模式。 使用装饰模式增强对象的某个功能,比生成子类再增强,更为灵活。 2.如何实现 1)抽象组件:定义一个抽象类,该抽象类定义了“被装饰者”需要被“装饰的方法” 2)具体组件:抽象组件的一个子类。成为“…

    2022年8月29日
    45400
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部