烟台h5网站开发,怎样做境外网站,wordpress优酷视频,php 如何用op浏览器开发手机网站目录
一 为什么要加密?
二 常见的密码算法
三 密钥
四 密码学常识
五 密码信息威胁
六 凯撒密码 一 为什么要加密?
在互联网的通信中#xff0c;数据是通过很多计算机或者通信设备相互转发#xff0c;才能够到达目的地,所以在这个转发的过程中#xff0c;如果通信包…目录
一 为什么要加密?
二 常见的密码算法
三 密钥
四 密码学常识
五 密码信息威胁
六 凯撒密码 一 为什么要加密?
在互联网的通信中数据是通过很多计算机或者通信设备相互转发才能够到达目的地,所以在这个转发的过程中如果通信包被其他人捕获到那么数据就不再安全了。
中间人攻击:这是一种常见的攻击方式,黑客可以利用这种攻击方式来拦截客户端和服务端之间的通信。在客户端和服务端之间建立一个虚假的连接然后将通信数据传递给目标服务端并在客户端和服务端之间进行窃取或修改数据。即拿到客户端的数据,进行修改网络嗅探工具: Wireshark、Tcpdump等这些工具能够监听网络上的数据包并将其显示在黑客的计算机上使他们能够查看通信的内容
二 常见的密码算法
密码算法是一种特殊的算法它通过数学和计算机科学的技术手段实现对信息的加密和解密确保信息在传输过程中不被未经授权的人员读取、篡改或伪造。密码算法的核心目标是保护数据的机密性、完整性和真实性同时也可以用于实现鉴权和抗抵赖等功能。 对称密码算法Symmetric Cryptography 加密和解密过程使用同一密钥即一把钥匙开锁锁上后再用这把钥匙打开例如DES、AES高级加密标准等。 非对称密码算法Asymmetric Cryptography或公钥密码算法 使用一对密钥一个公开公钥用于加密另一个私有私钥用于解密或者相反用于数字签名例如RSA、ECC椭圆曲线密码学、DHDiffie-Hellman密钥交换等。 哈希函数Hash Functions或散列函数 将任意长度的输入明文转化为固定长度的输出哈希值或指纹特点是不可逆理论上不能从哈希值直接反推出原始输入用于数据完整性校验、消息认证码MAC生成、密码存储等领域例如MD5已不推荐用于安全性要求较高的场合、SHA系列SHA-1至SHA-3等。 消息认证码Message Authentication Code, MAC和数字签名算法 用于确认数据发送者的身份并确保数据在传输过程中未被修改如HMAC、RSA签名、ECDSA等。 序列密码Stream Ciphers 按位或逐字节进行加密操作常见的有RC4已不再安全等。 分组密码Block Ciphers 把明文数据分割成固定长度的块进行加密处理例如DES、AES等。
三 密钥
密钥就相当于是钥匙,如果要是丢了那么数据必然是不安全的任何形式的密码,如果密钥丢了,数据的安全性就无法保证了。
四 密码学常识
不要使用保密的密码算法 指不要依赖于自己开发的、没有经过广泛评审和测试的密码算法。通常情况下开发人员和安全专家不建议自行设计密码算法而是应该使用已经广泛测试和被认可为安全的标准密码算法如AES、RSA等。这是因为自行设计的密码算法可能存在未知的漏洞或弱点而公认的标准算法经过了大量的安全分析和测试。 任何密码总有一天都会被破解 这个观点提醒我们没有绝对安全的密码。尽管某些密码算法可能非常强大但随着计算技术的进步和攻击方法的演变总会有可能破解密码的方法出现。因此密码应该被视为一种安全性措施但不能完全依赖它们来保护数据。 密码只是信息安全的一部分 这个观点强调了信息安全的多层次性质。除了密码之外还有其他安全措施如访问控制、加密、身份验证、网络安全等都是信息安全的重要组成部分。密码只是其中的一部分必须与其他安全措施结合使用以建立更全面的安全性防御。 五 密码信息威胁 不可否认性 对于否认行为来说,如果发送方丢失了自己的密钥,被攻击者拿到 在这种情况下虽然数字签名确实是合法发送者所用的签名但实际上通信行为是由黑客发起的。这使得接收者很难辨别通信是否来自合法发送者因为签名验证通过了。 为了防止这种情况发生重要的是发送者应该采取适当的措施来保护其私钥如使用安全的存储设备、定期更换密钥、限制私钥的使用权限等。同时接收者也应该谨慎验证签名确保通信的真实性和完整性。 六 凯撒密码
一种古老且简单的替换密码它基于字母表的固定位移。
加密时明文中的每个字母都按照一个固定的数目向右或向左移动是基于字母表移动产生密文。例如当位移量为3时字母A将被替换为D字母B将被替换为E依此类推。解密时就是将密文中的每个字母向相反的方向移动相同的位移量。要注意是按照字母表中的顺序移动比如移动三个那么F就变成I。 6.1 凯撒密码的实现
为了跟图示保持一致这里就使用上面图中的ABCDEF并且固定位移数设置为3原始数据ABCDEF: 加密后数据DEFGHI解密后数据:ABCDEF
#include iostream
#include windows.h
using namespace std;
string encryptCaesar(string plaintext,int shift)
{string ciphertext ;for(char c: plaintext){if(isalpha(c)){char base islower(c) ? a : A;c ((c - base shift) % 26) base;ciphertext c;}}return ciphertext;
}// 解密函数
string decryptCaesar(string ciphertext,int shift)
{return encryptCaesar(ciphertext,26 - shift);
}int main()
{SetConsoleOutputCP(CP_UTF8);string plainText ABCDEF;int shift 3;string ciphertext encryptCaesar(plainText,shift);cout加密前数据:plainTextendl;cout加密前数据:ciphertextendl;cout解密后数据:decryptCaesar(ciphertext,shift);return 0;
}