对称加密是什么?
假设我们有一个比特串1011,我们希望用对称加密的方式将其加密并发送给接收方。我们选择一个密钥K=1100,然后进行一种对称加密算法操作,比如异或运算,将1011和1100异或得到0111,然后将0111发送给接收方。接收方使用相同的密钥1100和相同的对称加密算法操作(比如异或运算),将0111和1100异或得到1011,就成功解密出原始比特串1011。
对称加密其基本原理是加密和解密使用相同密钥的过程。发送方在发送数据之前使用密钥对数据进行加密,接收方使用相同密钥对数据进行解密,从而确保数据传输的安全性。
对称加密的优劣点
实现简单:对称加密使用相同的密钥进行加密和解密,实现简单且容易管理。
应用场景
数据传输加密:在某些情况下,对称加密可以用于数据传输的简单加密需求,特别是对于一次性数据传输的临时安全性需求,对称加密可以提供一定程度的保护。
加解密小实验
最后一起来做个小实验,通过AES来进行数据的加解密。
# 生成AES密钥
$key = New-Object Byte[] 16
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($key)
# 打印输出AES密钥
$encodedKey = [Convert]::ToBase64String($key)
Write-Host "AES Key: $encodedKey"
# 定义要加密的文本
$textToEncrypt = "等保不好做啊"
# 将文本转换为字节数组
$plaintextBytes = [System.Text.Encoding]::UTF8.GetBytes($textToEncrypt)
# 创建AES加密算法对象
$aes = New-Object Security.Cryptography.AesCryptoServiceProvider
$aes.Key = $key
# 加密操作
$encryptor = $aes.CreateEncryptor()
$encryptedBytes = $encryptor.TransformFinalBlock($plaintextBytes, 0, $plaintextBytes.Length)
# 将加密后的字节数组转换为Base64字符串并输出
$encryptedText = [Convert]::ToBase64String($encryptedBytes)
Write-Host "Encrypted text: $encryptedText"
# 将加密后的Base64字符串转换为字节数组
$cipherBytes = [Convert]::FromBase64String($encryptedText)
# 创建AES解密算法对象
$aesDecryptor = $aes.CreateDecryptor()
# 解密操作
$decryptedBytes = $aesDecryptor.TransformFinalBlock($cipherBytes, 0, $cipherBytes.Length)
# 将解密后的字节数组转换为文本并输出
$decryptedText = [System.Text.Encoding]::UTF8.GetString($decryptedBytes)
Write-Host "Decrypted text: $decryptedText"
原文始发于微信公众号(等保不好做啊):网络安全基础技术扫盲篇名词解释之对称加密
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论