看懂这篇文章,你就懂了信息安全的密码学

看懂这篇文章-你就懂了信息安全的密码学

一、前言

  • 熟悉现代密码学体系包含的主流密码技术
  • 掌握Base64和Hex编码技术的特性与使用案例
  • 掌握对称密码和非对称密码的特性与使用案例
  • 掌握混合密码系统和随机数的特征与使用案例

二、关于密码

数学与密码技术的关系:数学是密码技术的基础,复杂的密码技术往往都会涉及到复杂的数学公式。

三、信息安全

1. 概念

信息安全是指信息 络的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏 、 更改 、泄露、否认等,系统连续可靠正常地运行,信息服务不中断。 信息安全安全是建立在以密码技术为基础的计算机安全领域,辅以通信技术、计算机技术与 络技术等方面的内容。

2. 与密码学的关系

  • 密码学是保障信息安全的核心技术 ,但不是提供信息安全的唯一方式 。

  • 信息安全是密码学研究与发展的目的 。

  • 信息安全的理论基础是密码学,信息安全的问题根本解决往往依靠密码学理论 。

3. 密码学与信息安全常识

  • 不要使用保密的密码算法

  • 使用低强度的密码比不进行加密更危险

  • 任何密码总有一天会被破解

  • 密码只是信息安全的一部分

四、现代密码学体系

1. 信息安全威胁与密码技术

  • 密文(Ciphertext):明文经过编码变换所生成的数据
  • 加密(Encryption):对明文进行编码变换生成密文的过程
  • 解密(Decryption):将密文恢复成明文的过程
  • 密钥:密码算法需要用到密钥的,密钥就相当于保险库大门的钥匙,重要性不言而喻,所以切记不要泄露密码的密钥。 密钥 (Key):控制明文与密文之间相互变换的,分为加密密钥和解密密钥。

3. ASCII编码

ASCII码 是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646 。在这个页面,你可以找到8位的256个字符、ASCII码表和Windows-1252 (code page 1252,它是国际标准ISO 8859-1的一个扩展字符集) 标准保持一致;

ASCII码American Standard Code for Information Interchange 的缩写,而不是ASCⅡ(罗马数字2),有很多人在这个地方产生误解;

ASCII码 规范于1967年第一次发布,最后一次更新是在1986年,它包含了33个控制字符(具有某些特殊功能但是无法显示的字符)和95个可显示字符;

ASCII码大致可以分作三部分组成。
第一部分是:ASCII非打印控制字符
第二部分是:ASCII打印字符
第三部分是:扩展ASCII打印字符

3.1 第一部分:ASCII非打印控制字符表

ASCII表上的数字0–31分配给了控制字符,用于控制像打印机等一些外围设备。例如,12代表换页/新页功能。此命令指示打印机跳到下一页的开头。(参详ASCII码表中0-31)

3.2 第二部分:ASCII打印字符

数字 32–126 分配给了能在键盘上找到的字符,当您查看或打印文档时就会出现。数字127代表 DELETE 命令。(参详ASCII码表中32-127)

3.3 第三部分:扩展ASCII打印字符

扩展的ASCII字符满足了对更多字符的需求。扩展的ASCII包含ASCII中已有的128个字符(数字0–32显示在下图中),又增加了128个字符,总共是256个。即使有了这些更多的字符,许多语言还是包含无法压缩到256个字符中的符 。因此,出现了一些ASCII的变体来囊括地区性字符和符 。例如,许多软件程序把ASCII表(又称作ISO8859-1)用于北美、西欧、澳大利亚和非洲的语言。

4. 字符串的ASCII码与二进制位

5. Hex编码与Base64编码

我们知道在计算机中的字节共有256个组合,对应就是ascii码,而ascii码的128~255之间的值是不可见字符。而在 络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以我们需要将字节转为正确的课可见字符,需要对字节数组进行进一步编码,常用编码格式用Hex编码和Base64编码。

5.1 Hex编码

1字节=8位2进制,比如小写字母a,ASCII表对应十进制为97,二进制表示为01100001

1字节=2位16进制,比如小写字母a,ASCII表对应十进制为97, 十六进制表示为61

单元测试:

5.2 base64编码

  • Base64编码要求把3个8位字节(3乘8=24)转化为4个6位的字节(4乘6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用’=‘,因此编码后输出的文本末尾可能会出现1或2个’=’。为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。标准base64只有64个字符(大写A到Z、小写a到z、数字0到9、“+”和“/”)以及用作后缀等 ;

  • Base64是 络上最常见的用于传输8Bit字节码的可读性编码算法之一

  • 以每 3 个 字符(1Byte=8bit)为一组,然后针对每组,首先获取每个字符的 ASCII 编码(字符’a’=97=01100001),然后将 ASCII 编码转换成 8 bit 的二进制,得到一组 3 * 8=24 bit 的字节。然后再将这 24 bit 划分为 4 个 6 bit 的字节,并在每个 6 bit 的字节前面都填两个高位 0,得到 4 个 8 bit 的字节,然后将这 4 个 8 bit 的字节转换成十进制,对照 BASE64 编码表 (下表),得到对应编码后的字符。

  • 使用64个可见字符来表示一个二进制数组,编码后数据大小变成原来的4/3

  • 3个字符用4个可见字符来表示

5.2.4 代码示例2-不够三字节

单元测试:

5.3 代码示例-编码与解码

单元测试:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年7月9日
下一篇 2022年7月9日

相关推荐