【加密与解密(第四版)】第六章笔记

第六章 加密算法

6.1 单项散列算法

HASH函数主要用于数字签名、消息完整性检测、消息起源的认证检测;常见的散列算法有MD5、SHA、RIPE-MD、HAVAL、N-Hash

一般使用hash算法作为加密的一个中间步骤

MD5算法详解:++https://www.cnblogs.com/xiaxveliang/p/15004954.html++

SHA算法详解:++https://blog.csdn.net/qq_26664043/article/details/136997874++

SM3国密算法:++https://oscca.gov.cn/sca/xxgk/2010-12/17/1002389/files/302a3ada057c4a73830536d03e683110.pdf++

6.2 对称加密算法

对称加密:++https://blog.csdn.net/notechsolution/article/details/106604593++

6.3 公开密钥加密算法

++相关链接:https://ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html++

++https://zhuanlan.zhihu.com/p/436455172++

6.4 其他算法

CRC32:++https://blog.csdn.net/Rong_Toa/article/details/109276610++

6.5 常见的加密库接口及其识别

Miracl大数运算库、FGInt、OpenSSL、Microsoft Crypto API

6.6 加密算法在软件保护中的应用

复杂的设计也有很多。第一,从算法上可以考虑使用不常见的密码学算法。由于这些算法没有特征,只需要这一步就可以阻挡相当一部分破解者了。第二,使用密码学算法时,尽量采用自己的算法实现。如果使用已公开的密码学算法库,则要去掉一些敏感的字符串,让破解者在分析时找不到特征,识别不出是哪个算法库。第三,要有自定义的算法。因为大多数开发人员不具备专业的密码学知识,所以不要求这些自定义算法达到密码学算法那么复杂的程度。开发人员在设计自己的加密算法时,可以多使用大数运算方面的计算。一方面,这些计算的汇编或底层语言实现比较复杂,经过编译器的编译,生成的汇编代码或字节码等都较难分析;另一方面,这些算法本身要求使用者具有基本的数论知识,这对破解者而言又是一个阻碍。

要注意:

不要依赖自己设计的算法。

尽可能采用成熟的、安全性高的密码学算法。

定期更新密钥。

在成本允许的情况下,定期更新算法或安全机制。

严格按照标准建议的安全参数执行,使用标准化的安全算法或协议。

从攻击者的角度审视自己设计的安全机制。

在使用开源的密码学算法库时,去掉对攻击者有用的信息提示时常关注密码学算法的最新进展。

相关推荐
huijingjituan435 分钟前
【企业级IM即时通讯系统|定制开发与私有化部署】
安全·即时通讯·对话·聊天·极光鸟
萧瑟余晖11 分钟前
Java深入解析篇十三之Java日志API(JUL)详解
java·开发语言
网安小学生(兼顾数据库版)17 分钟前
CRA漏洞通报义务倒计时:9.11生效要求深度解读
网络·安全·web安全
国科安芯26 分钟前
小卫星综合电子系统中功能安全与抗辐射加固的协同设计研究
嵌入式硬件·安全·架构·risc-v·抗辐射·小卫星·综合电子系统
luj_176837 分钟前
毒素驱动的生物自毁机制探析
服务器·c语言·开发语言·经验分享·算法
海兰1 小时前
【 Python 量化交易】第6章:数据可视化
开发语言·python·信息可视化
多多鼠1 小时前
Tool Calling的信任边界:从协议校验到执行沙箱的完整链路设计
运维·开发语言·网络·人工智能·python·langchain
Java的搬运工1 小时前
Spring boot 事件监听
java·spring boot·spring·编程语言
啊阿狸不会拉杆1 小时前
《计算机网络-自顶向下方法》1.5 协议层次及其服务模型 读书笔记
开发语言·计算机网络·php
tryxr1 小时前
Chat2Excel 项目通用服务开发
java·开发语言·excel·java项目开发