我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。
这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。
刚接触加密领域的新手经常搞不清楚这几个概念,这里给大家辨析一下,不是基础普及,所以你应该先对这些略知一二。
目录
1 什么是编码
什么是编码:编码是用一种公开的方式把数据从一种形式变换为另一种形式,没有密钥,可逆,不丢失信息。典型如ASCII、UTF-8、URL encode,以及非常常用的base64。很多人以为让别人看不出来就是加密,不是的啊,让别人解不出来才是加密(需要密钥)。
2 什么是哈希和摘要
什么是哈希:哈希是一种算法,把数据映射到一个固定长度的值,没有密钥,不可逆,无法还原数据。
什么是摘要:摘要就是哈希。典型如MD5、SHA。很多人以为MD5是加密,误解了啊,看不懂不是加密,没有密钥解不出来才是加密。
3 什么是加密
什么是加密:加密是用密钥隐藏信息,没有密钥无法还原信息。加密有两大类,非对称加密和对称加密。非对称加密是互联网安全的基础(非常精妙,解决了通过邮局邮寄钥匙的安全隐患),对称加密则比较高效(非对称加密很慢但并不意味着更安全),通常的用法是用非对称加密加密一个随机对称密钥,也就是RSA+AES,其中AES密钥随机生成,用RSA加密随数据传输,兼顾了安全和高效。
4 对比
编码 | 哈希摘要 | 加密 | |
信息? | 不丢失信息 | 丢失信息 | 不丢失信息 |
看懂? | 有些看不懂,有些能看懂 | 看不懂 | 看不懂 |
还原? | 能还原 | 不能还原 | 有密钥才能还原 |
速度? | 很快 | 快 | 慢、极慢 |
5 HTTP的基本认证是加密吗
HTTP的基本认证是加密的吗?不是的,只是把用户名密码用base64编码而已,base64编码不使用常见的符号,可以安全地混合在格式文本中,所以非常常用。但是一定要记住,这只是编码,而非加密。
6 UNIX用户密码是加密的吗
UNIX的用户密码是加密的吗?不是的,那是个摘要。UNIX的用户密码的原始文本只在用户的脑子里,登录的时候用密码生成摘要,跟文件里那个字段比较,一致就通过。
摘要很难被反推出来,但是暴力猜测还是可能的,但是猜到的那个未必是用户使用的秘密,因为两个文本生成同一个摘要的概率还是有的(只要数据的位数大于摘要的位数,冲突就是不可避免的)。
7 私有编码算不算加密
用一种私有的方式编码算不算加密?比如把所有字符值+1,你不告诉我的话也算吧——但是太容易破解啊。
顺便说一句,RSA算法的数学基础好像还没有被证明,万一错了,整个互联网就崩溃了。
(这里是结束)
标签:编码,base64,加密,摘要,密钥,哈希 From: https://blog.csdn.net/2301_77171572/article/details/132899467