当前位置: 首页 > news >正文

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

第六章 加密算法

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 加密算法在软件保护中的应用

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

要注意:

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

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

定期更新密钥。

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

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

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

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

相关文章:

  • 7个常见的SQL慢查询问题及其解决方法
  • 实在智能TARS:面向垂直领域自主训练的类GPT大模型
  • k8s 部署mqtt简介
  • /tmp目录下出现system-private文件夹解决方法
  • 【C++风云录】电力系统仿真库全接触:电力系统仿真与智能电网
  • vue 锚点跳转,适用移动端和web端
  • 【相机开发问题总结】锁屏下相机资源释放问题
  • 常见的100个Shell命令,超级实用!
  • mars3d的V2版本的Video2D与V3版本的Video2D实现数据快速迁移
  • Springboot阶段项目---《书城项目》
  • 大厂程序员离职,开发一个盲盒小程序2万,一周开发完!
  • centos 安装mysql8 客户端
  • SpringBoot集成腾讯云敏感词校验API流程
  • vlan综合实验
  • 运维笔记.MySQL.基于mysqldump数据备份与恢复
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【5+】跨webview多页面 触发事件(二)
  • 【EOS】Cleos基础
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • 78. Subsets
  • cookie和session
  • ES10 特性的完整指南
  • GitUp, 你不可错过的秀外慧中的git工具
  • Go 语言编译器的 //go: 详解
  • React as a UI Runtime(五、列表)
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 初识 beanstalkd
  • 从输入URL到页面加载发生了什么
  • 服务器之间,相同帐号,实现免密钥登录
  • 关于for循环的简单归纳
  • 驱动程序原理
  • 我建了一个叫Hello World的项目
  • 学习笔记:对象,原型和继承(1)
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • mysql面试题分组并合并列
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #07【面试问题整理】嵌入式软件工程师
  • (1)SpringCloud 整合Python
  • (vue)页面文件上传获取:action地址
  • (第30天)二叉树阶段总结
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (杂交版)植物大战僵尸
  • (转)EOS中账户、钱包和密钥的关系
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET CORE 第一节 创建基本的 asp.net core
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .Net中wcf服务生成及调用
  • .net中的Queue和Stack
  • .skip() 和 .only() 的使用