网络安全中的加密与解密技术:全面指南及实验

引言

在当今数字时代,加密技术是保护数据安全的重要工具。从个人通讯到企业数据保护,加密帮助确保信息在存储和传输过程中的机密性和完整性。本文旨在全面介绍加密和解密的原理、常见算法以及实验,以帮助读者深入理解其在网络安全中的应用。

加密与解密的基础

1. 加密的定义

加密是一种技术,通过使用算法(称为加密算法)将明文转换为无法读取的密文,只有拥有密钥的人才能解密还原成可读的格式。

2. 解密的定义

解密是将密文转换回原始明文的过程,使用特定的密钥执行相应的解密算法完成。

常见加密算法

1. 对称加密
  • 算法示例:AES(高级加密标准)、DES(数据加密标准)
  • 特点:加密和解密使用相同密钥,速度快,适用于大量数据加密。
2. 非对称加密
  • 算法示例:RSA、ECC(椭圆曲线加密)
  • 特点:使用一对公钥和私钥,其中一个用于加密,另一个用于解密,更适合安全密钥的分发。
3. 散列函数
  • 算法示例:SHA(安全散列算法)、MD5
  • 用途:虽然不是加密算法,但散列广泛用于验证数据完整性和无法逆向的密码存储。

加密的应用场景

  • 数据传输安全:如SSL/TLS协议保护Web交易。
  • 用户认证:如密码的存储与验证。
  • 软件许可:使用加密确保软件许可的有效性和安全性。

实验:Python实现加密与解密

实验目的

通过Python演示对称和非对称加密的基本使用,提供代码示例。

实验环境
  • 工具:Python 3.x
  • cryptography
实验步骤
安装库
pip install cryptography
对称加密实验
from cryptography.fernet import Fernet

# 生成密钥
key = Fernet.generate_key()
cipher = Fernet(key)

# 明文
plaintext = "Hello, CSDN readers!"
encoded = plaintext.encode()

# 加密
encrypted = cipher.encrypt(encoded)
print("Encrypted:", encrypted)

# 解密
decrypted = cipher.decrypt(encrypted)
print("Decrypted:", decrypted.decode())
非对称加密实验
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.primitives.asymmetric import padding

# 生成密钥对
private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048,
    backend=default_backend()
)
public_key = private_key.public_key()

# 明文
plaintext = "Hello, secure world!"
encoded = plaintext.encode()

# 使用公钥加密
encrypted = public_key.encrypt(
    encoded,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

print("Encrypted:", encrypted)

# 使用私钥解密
decrypted

 = private_key.decrypt(
    encrypted,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)
print("Decrypted:", decrypted.decode())

结语

掌握加密和解密技术对于网络安全专业人员是至关重要的。通过本文介绍的理论知识和实际代码实验,读者应能更好地理解并应用这些技术来保护数据安全。

这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴免费领取哦,无偿分享!!!
在这里插入图片描述

网络安全零基础入门学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
在这里插入图片描述
同时每个成长路线对应的板块都有配套的视频提供:
在这里插入图片描述
在这里插入图片描述
因篇幅有限,仅展示部分资料

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料
在这里插入图片描述

网络安全面试题

在这里插入图片描述
所有资料 ⚡️ ,朋友们如果有需要全套 《网络安全入门+进阶学习资源包》,扫码获取~
在这里插入图片描述

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
java加密解密 function encrypt(str, pwd) { if(pwd == null || pwd.length <= 0) { alert("Please enter a password with which to encrypt the message."); return null; } var prand = ""; for(var i=0; i<pwd.length; i++) { prand += pwd.charCodeAt(i).toString(); } var sPos = Math.floor(prand.length / 5); var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos*2) + prand.charAt(sPos*3) + prand.charAt(sPos*4) + prand.charAt(sPos*5)); var incr = Math.ceil(pwd.length / 2); var modu = Math.pow(2, 31) - 1; if(mult < 2) { alert("Algorithm cannot find a suitable hash. Please choose a different password. \nPossible considerations are to choose a more complex or longer password."); return null; } var salt = Math.round(Math.random() * 1000000000) % 100000000; prand += salt; while(prand.length > 10) { prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString(); } prand = (mult * prand + incr) % modu; var enc_chr = ""; var enc_str = ""; for(var i=0; i<str.length; i++) { enc_chr = parseInt(str.charCodeAt(i) ^ Math.floor((prand / modu) * 255)); if(enc_chr < 16) { enc_str += "0" + enc_chr.toString(16); } else enc_str += enc_chr.toString(16); prand = (mult * prand + incr) % modu; } salt = salt.toString(16); while(salt.length < 8)salt = "0" + salt; enc_str += salt; return enc_str; } function decrypt(str, pwd) { if(str == null || str.length < 8) { alert("A salt value could not be extracted from the encrypted message because it's length is too short. The message cannot be decrypted."); return; } if(pwd == null || pwd.length <= 0) { alert("Please enter a password with which to decrypt the message."); return; } var prand = ""; for(var i=0; i<pwd.length; i++) { prand += pwd.charCodeAt(i).toString(); } var sPos = Math.floor(prand.length / 5); var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos*2) + prand.charAt(sPos*3) + prand.charAt(sPos*4) + prand.charAt(sPos*5)); var incr = Math.round(pwd.length / 2); var modu = Math.pow(2, 31) - 1; var salt = parseInt(str.substring(str.length - 8, str.length), 16); str = str.substring(0, str.length - 8); prand += salt; while(prand.length > 10) { prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString(); } prand = (mult * prand + incr) % modu; var enc_chr = ""; var enc_str = ""; for(var i=0; i<str.length; i+=2) { enc_chr = parseInt(parseInt(str.substring(i, i+2), 16) ^ Math.floor((prand / modu) * 255)); enc_str += String.fromCharCode(enc_chr); prand = (mult * prand + incr) % modu; } return enc_str; }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值