网络安全基础:加密与解密技术实验

引言

在网络安全领域,加密和解密是保护信息安全的核心技术。本文将介绍加密和解密的基本概念,并通过一个实验示例来展示这些技术的实际应用。

加密与解密的基本概念

1. 什么是加密?

加密是将明文(可读格式的信息)转换为密文(加密后的信息)的过程,以防止未授权的用户访问。

2. 什么是解密?

解密是将密文转换回原始的明文,使得信息可以被授权用户正常阅读和使用。

3. 常见的加密算法
  • 对称加密(如AES):加密和解密使用相同的密钥。
  • 非对称加密(如RSA):使用一对公钥和私钥,其中一个用于加密,另一个用于解密。

实验目的

通过Python实现简单的对称加密和解密,理解加密过程和如何安全地管理密钥。

实验环境

  • 操作系统:任何支持Python的系统
  • 工具:Python 3.x
  • cryptography

实验步骤

步骤一:安装必要的库

在终端或命令行中运行以下命令以安装cryptography库:

pip install cryptography
步骤二:编写加密脚本

创建一个名为 encrypt.py 的Python脚本,并添加以下代码:

from cryptography.fernet import Fernet

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

# 明文
text = "Hello, CSDN readers!"
encoded_text = text.encode('utf-8')

# 加密
cipher_text = cipher_suite.encrypt(encoded_text)
print("Encrypted:", cipher_text)
步骤三:编写解密脚本

在同一目录下创建一个名为 decrypt.py 的脚本,并添加以下代码:

from cryptography.fernet import Fernet

# 使用相同的密钥
key = b'your_key_here'  # 使用encrypt.py中生成的密钥
cipher_suite = Fernet(key)

# 密文
cipher_text = b'your_cipher_text_here'  # 使用encrypt.py生成的密文

# 解密
decrypted_text = cipher_suite.decrypt(cipher_text)
print("Decrypted:", decrypted_text.decode('utf-8'))

实验结果分析

通过运行上述脚本,你将看到如何简单地使用Python进行信息的加密和解密。重要的是要确保密钥的安全,因为密钥的泄露等同于加密无效。

结语

加密和解密是网络安全中不可或缺的技术。通过本文的实验,希望读者能更好地理解其工作原理及其在实际场景中的应用。随着技术的发展,选择合适的加密算法和安全地管理密钥将变得越来越重要。

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

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

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

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

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

网络安全面试题

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

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
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; }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值