没有合适的资源?快使用搜索试试~ 我知道了~
首页程序员必修:免费加密基础课程Crypto101简介
程序员必修:免费加密基础课程Crypto101简介
需积分: 9 0 下载量 135 浏览量
更新于2024-07-15
收藏 15.53MB PDF 举报
"Crypto101.pdf"是一份面向编程者,特别是初学者的入门级加密学教程。该课程由Laurens Van Houtven在2013年至2017年间创作,并遵循Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) 许可协议。这个许可允许用户在以下条件下自由分享和使用: 1. 分享:可以在任何媒体或格式下复制和分发材料,无需事先申请许可。 2. 适应与创新:你可以根据需要对材料进行改编、混合和扩展,但必须保留原作者的署名和链接,并明确指出是否进行了修改。对于适应性使用,只要不暗示许可方支持或认可你的具体应用即可。 3. 非商业用途:重要的一点是,这份材料不能用于商业目的,这意味着它主要用于教育和研究,而不是用于盈利活动。 4. 无附加限制:除了上述规定的条件外,你不应施加任何法律条款或技术措施来限制其他人按照许可条款合法进行的行为。 值得注意的是,这些权利仅适用于版权受保护的部分,公共领域的内容以及许可允许的使用情况。如果你发现材料中的某些部分已经进入公共领域,或者你的使用得到了额外许可,那么这些限制可能不再适用。 Crypto101.pdf教程为学习者提供了一个基础平台,帮助他们理解加密和解密的基本概念,包括但不限于密码学原理、加密算法(如对称加密、非对称加密、哈希函数等)、数字签名和安全通信协议。通过这门课程,学员可以掌握核心加密技术,为日常编程和信息安全实践打下坚实的基础。同时,理解并尊重版权规则,确保在分享和利用这些教育资源时符合法律要求。
资源详情
资源推荐
CHAPTER 4. ACKNOWLEDGMENTS 16
Following the public release,many more people contributed changes.
I’d like to thank the following people in particular (again, in no partic-
ular order):
• coh2, for work on illustrations
• TinnedTuna, for review work on the XOR section (and others)
• dfc, for work on typography and alternative formats
• jvasile, for work on typefaces and automated builds
• hmmueller, for many, many notes and suggestions
• postboy (Ivan Zubo ), for many reported issues
• EdOverow, for many contributions
.. as well as the huge number of people that contributed spelling,
grammar and content improvements. ank you!
Part II
Building blocks
17
5
Exclusive or
5.1 Description
Exclusive or, often called ”XOR”, is a Boolean
1
binary
2
operator that is
true when either the rst input or the second input, but not both, are
true.
Another way to think of XOR is as something called a”programmable
inverter”: one input bit decides whether to invert the other input bit, or
to just pass it through unchanged. ”Inverting” bits is colloquially called
”ipping” bits, a term we’ll use often throughout the book.
In mathematics and cryptography papers, exclusive or is generally
represented by a cross in a circle:
⊕
. We’ll use the same notation in
this book:
1
Uses only ”true” and ”false” as input and output values.
2
Takes two parameters.
18
CHAPTER 5. EXCLUSIVE OR 19
P
i
C
i
k
i
P
i
C
i
k
i
e inputs and output here are named as if we’re using XOR as an
encryption operation. On the left, we have the plaintext bit
P
i
. e
i
is just an index, since we’ll usually deal with more than one such bit.
On top, we have the key bit
k
i
, that decides whether or not to invert
P
i
. On the right, we have the ciphertext bit,
C
i
, which is the result of
the XOR operation.
5.2 A few properties of XOR
Since we’ll be dealing with XOR extensively during this book, we’ll
take a closer look at some of its properties. If you’re already familiar
with how XOR works, feel free to skip this section.
We saw that the output of XOR is 1 when one input or the other
(but not both) is 1:
0 ⊕ 0 = 0 1 ⊕ 0 = 1
0 ⊕ 1 = 1 1 ⊕ 1 = 0
ere are a few useful arithmetic tricks we can derive from that.
CHAPTER 5. EXCLUSIVE OR 20
1. You can apply XOR in any order: a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c
2. You can ip the operands around: a ⊕ b = b ⊕ a
3.
Any bit XOR itself is 0:
a ⊕a = 0
. If
a
is 0, then it’s
0 ⊕0 = 0
;
if a is 1, then it’s 1 ⊕ 1 = 0.
4.
Any bit XOR 0 is that bit again:
a ⊕ 0 = a
. If
a
is 0, then it’s
0 ⊕ 0 = 0; if a is 1, then it’s 1 ⊕ 0 = 1.
ese rules also imply a ⊕ b ⊕ a = b:
a ⊕ b ⊕ a = a ⊕ a ⊕ b (second rule)
= 0 ⊕ b (third rule)
= b (fourth rule)
We’ll use this property often when using XOR for encryption; you
can think of that rst XOR with
a
as encrypting, and the second one
as decrypting.
5.3 Bitwise XOR
XOR, as we’ve just dened it, operates only on single bits or Boolean
values. Since we usually deal with values comprised of many bits, most
programming languages provide a ”bitwise XOR”operator: an operator
that performs XOR on the respective bits in a value.
Python, for example, provides the
^
(caret) operator that performs
bitwise XOR on integers. It does this by rst expressing those two
剩余253页未读,继续阅读
Joelhy
- 粉丝: 0
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- JDK 17 Linux版本压缩包解压与安装指南
- C++/Qt飞行模拟器教员控制台系统源码发布
- TensorFlow深度学习实践:CNN在MNIST数据集上的应用
- 鸿蒙驱动HCIA资料整理-培训教材与开发者指南
- 凯撒Java版SaaS OA协同办公软件v2.0特性解析
- AutoCAD二次开发中文指南下载 - C#编程深入解析
- C语言冒泡排序算法实现详解
- Pointofix截屏:轻松实现高效截图体验
- Matlab实现SVM数据分类与预测教程
- 基于JSP+SQL的网站流量统计管理系统设计与实现
- C语言实现删除字符中重复项的方法与技巧
- e-sqlcipher.dll动态链接库的作用与应用
- 浙江工业大学自考网站开发与继续教育官网模板设计
- STM32 103C8T6 OLED 显示程序实现指南
- 高效压缩技术:删除重复字符压缩包
- JSP+SQL智能交通管理系统:违章处理与交通效率提升
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功